我有一个项目清单。这些项目中的每一个都有自己的概率。
任何人都可以建议一种算法来根据概率选择一个项目吗?
原文由 Ruzanna 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个项目清单。这些项目中的每一个都有自己的概率。
任何人都可以建议一种算法来根据概率选择一个项目吗?
原文由 Ruzanna 发布,翻译遵循 CC BY-SA 4.0 许可协议
示例代码:
double p = Math.random();
double cumulativeProbability = 0.0;
for (Item item : items) {
cumulativeProbability += item.probability();
if (p <= cumulativeProbability) {
return item;
}
}
原文由 Brent Worden 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
因此,每个项目存储一个标记其相对概率的数字,例如,如果您有 3 个项目,其中一个被选中的可能性应该是其他两个中的任何一个的两倍,那么您的列表将具有:
然后对列表的数字求和(在我们的例子中为 4)。现在生成一个随机数并选择该索引。 int index = rand.nextInt(4);返回数字,使索引在正确的范围内。
Java代码: