我有一个枚举,我想随机选择一个值,但不是真正的随机。我希望一些价值观被选中的可能性较小。以下是我迄今为止...随机的值从枚举的概率
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