我需要根据概率选择一种可能的输出。可以说我有

p[1]=20%
p[2]=40%
p[3]=15%
p[4]=25%


p []的大小是一个变量(在本例中为4),我知道它们加起来等于100%。如何根据概率从p中选择一个元素?

最佳答案

最简单的使用方法是使用Random.nextFloat()方法,然后检查0-1之间的随机数落在哪个范围内。

根据您的问题评论,您可能想要更多这样的东西:

Random r = new Random();
p[0]=0.2;
p[1]=0.4;
p[2]=0.15;
p[3]=0.25;

float myVal = r.nextFloat();
float probSum = 0.0;

for (int i = 0; i < p.length; p++) {
    probSum += p[i];
    if (myVal <= probSum) {
        return i;
    }
}
return p.length-1;


显然,您可以对此进行修饰,但这是一个应该起作用的一般想法。

关于java - 装好的骰子(加权随机),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22646328/

10-10 08:20