我有一個枚舉,我想隨機選擇一個值,但不是真正的隨機。我希望一些價值觀被選中的可能性較小。以下是我迄今爲止...隨機的值從枚舉的概率
private enum Type{
TYPE_A, TYPE_B, TYPE_C, TYPE_D, TYPE_E;
private static final List<Type> VALUES =
Collections.unmodifiableList(Arrays.asList(values()));
private static final int SIZE = VALUES.size();
private static final Random RANDOM = new Random();
public static Type randomType() {
return VALUES.get(RANDOM.nextInt(SIZE));
}
}
是否有每個值分配概率的一個有效方法是什麼?
代碼從here
我認爲你誤解了。想法是 - 你收到所有的重量。現在想象一下max =計算值的標尺。現在在這個規則中突破每一個重量,所以首先將(根據我的答案)0到10,第二個10到11,第11到第16個等等。現在將你的手指指向我們的統治者的隨機位置,並看看你指向哪一段。編輯答案。 – 2011-03-11 07:05:17
這實際上是我最終做的。謝謝! – tgrosinger 2011-03-11 07:16:58
順便說一句,如果在構造函數中預先計算你的邊界類型,你可以提高性能,但是在五種類型中它不是實際的。 – 2011-03-11 11:11:14