【发布时间】:2012-07-19 14:53:48
【问题描述】:
我有一个值列表,用 0 到 1 之间的双精度键表示我认为某事物对我有用的可能性。例如,获取问题的答案:
0.5 call your mom
0.25 go to the library
0.6 StackOverflow
0.9 just Google it
因此,我们认为在谷歌上搜索它的帮助可能是询问您妈妈的(大约)两倍。当我试图找出下一步要做的事情时,我希望“只是谷歌它”的返回频率大约是“打电话给你妈妈”的两倍。
我一直在寻找解决方案,但收效甚微。我发现的大多数东西都依赖于整数键(如How to randomly select a key based on its Integer value in a Map with respect to the other values in O(n) time?),而我没有,也不容易生成。
我觉得应该有一些 Java 数据类型可以为我做到这一点。有什么建议么?
【问题讨论】:
-
当您拥有
double值时,您链接到的答案是适用;它不是特定于整数的。 -
我认为情况并非如此。考虑行
int index = this.rand.nextInt(this.sum) + 1;。Random包没有在 0 和给定最大值之间生成doubles的等效函数。此外,在总和中加 1 显然是不正确的 - 但不清楚我会在总和中添加什么常数以确保可以选择最大权重元素。 -
和
rand.nextDouble()相乘,不要加任何东西。
标签: java types random-access