看板 java 關於我們 聯絡資訊
我想要亂數產生下面的列舉物件: 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
godfat:存到 array 去? 08/28 16:42
PsMonkey:寫 code generator... lol [逃] 08/28 16:45
ogamenewbie:public static Modifier random() { 08/28 17:10
ogamenewbie: return values()[new Random().nextInt(values(). 08/28 17:10
ogamenewbie: .length)]; } 08/28 17:11
ogamenewbie:這快速連推限制是裝飾用的嘛 @_@a 08/28 17:13
H45:非常感謝推文及以下回文 :) 08/28 18:57