装骰子(加权随机)

时间:2014-03-25 21:11:32

标签: java random

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

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

p []的大小是一个变量(在这种情况下是4),我知道它们总和为100%。如何根据它的概率从p中选择一个元素?

1 个答案:

答案 0 :(得分:1)

使用此方法的最简单方法是使用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;

显然你可以做到这一点,但这是一个应该有用的一般性想法。