作者H45 (!H45)
站內java
標題[問題] 隨機產生列舉物件的方法?
時間Tue Aug 28 16:40:37 2007
我想要亂數產生下面的列舉物件:
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