java - 如何通过概率选择一个项目?

标签 java list random probability

我有一个元素 list 。这些项目中的每一个都有自己的概率。

谁能推荐一种算法来根据概率挑选元素?

最佳答案

  1. 生成一个均匀分布的随机数。
  2. 遍历你的列表,直到被访问元素的累积概率大于随机数

示例代码:

double p = Math.random();
double cumulativeProbability = 0.0;
for (Item item : items) {
    cumulativeProbability += item.probability();
    if (p <= cumulativeProbability) {
        return item;
    }
}

关于java - 如何通过概率选择一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330394/

相关文章:

java - HashMap 上的 NotSerializableException

list - Haskell 从另一个等式中找到列表的长度

python - 对列表中的 x 空间进行循环引用的代码

C 洗牌二维数组

c++ - thread 不是 std c++ 的成员

c - C 语言中从整数中提取最后一个值并转换为字符

java - Spring AnnotationSessionFactoryBean NullPointerException

java - 递归使用模块化算术解释java

list - 比较两个golang列表以检查所有元素的方法是唯一的

java - 如果 sleep、join 函数抛出 Interrupted 异常,那么为什么 catch block 不捕获它们?