[問題] 隨機產生列舉物件的方法?

看板java作者 (!H45)時間18年前 (2007/08/28 16:40), 編輯推噓7(700)
留言7則, 4人參與, 最新討論串1/3 (看更多)
我想要亂數產生下面的列舉物件: public enum Modifier { NORMAL (1.0), VERY(2.0), MORE_OR_LESS(0.5); private final double value; private LinguisticModifier(double value) { this.value = value; } public double getValue() { return value; } } 目前想到亂數產生的方式如下: public Modifier a_random_modifier() { switch (new Random().nextInt() % 3) { case 0: return Modifier.NORMAL; break; case 1: return Modifier.VERY; break; case 2: return Modifier.MORE_OR_LESS; break; default:; } } 但是問題馬上出現了,如果列舉的型態多到數十個,那麼這種亂數產生的方式 就要寫上數十個 case. 舉例而言: switch (random.nextInt() % 52) { case 0: ... case 1: ... ... case 50: ... case 51: ... default:; } 這樣會寫到手斷掉....有數十行的程式碼要寫 如果有辦法得到列舉型態的 iterator, 也許就可以不用這麼累了。 請問有什麼好法子亂數產生這些列舉型態嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.211.53

08/28 16:42, , 1F
存到 array 去?
08/28 16:42, 1F

08/28 16:45, , 2F
寫 code generator... lol [逃]
08/28 16:45, 2F

08/28 17:10, , 3F
public static Modifier random() {
08/28 17:10, 3F

08/28 17:10, , 4F
return values()[new Random().nextInt(values().
08/28 17:10, 4F

08/28 17:11, , 5F
.length)]; }
08/28 17:11, 5F

08/28 17:13, , 6F
這快速連推限制是裝飾用的嘛 @_@a
08/28 17:13, 6F

08/28 18:57, , 7F
非常感謝推文及以下回文 :)
08/28 18:57, 7F
文章代碼(AID): #16qz-6h5 (java)
文章代碼(AID): #16qz-6h5 (java)