选择概率相等的三个数字中的一个?

时间:2014-01-30 10:04:56

标签: java random

我想选择概率相等的三个数字中的一个(33.3%)。我可以使用Random类来实现这一目标吗?

100x跑步后选择的每个号码的百分比是多少?是否均匀地分别为33.3%?

5 个答案:

答案 0 :(得分:1)

使用Random.nextInt(n)方法选择02之间的数字。使用此选项可以选择三个值中的一个。

int index = Random.nextInt(3);
int selectedValue = myOptions[index];

该方法返回的值是均匀分布的。因此,如果您无限重复此过程,则选择每个数字的概率将接近1/3。

来自文档:

  

所有n可能的int值均以(近似)相等概率生成

答案 1 :(得分:0)

你可以尝试这样的概率为1/25概率

if(new java.util.Random().nextInt(25)==0){
//Do something.
}

答案 2 :(得分:0)

Random rand = new Random();
int number = rand.nextInt(3) + 1;

请注意,没有真正随机的东西。在计算机科学中,我们使用所谓的伪随机性。对于大多数日常目的而言,这种目的非常随意,以至于差异并不显着。你说你将运行100次,然后是。对于所有意图和目的,它将是33.3333 ...%。

答案 3 :(得分:0)

你需要决定熵是否比“随机”更重要。随机性不会给你一个完美的33.3%,但最终结果将是不可预测的。其他算法可以给你一个完美的33.3%,但结果可以预测,甚至在某些情况下每次运行过程都是相同的。

答案 4 :(得分:0)

对于两个值范围,精确随机性是可能的 ....随机陈述后...

if(rand=>1&&rand<=1.4999999999999999999999....)

{

rand=1;

}

else

{

rand=2

}