我想选择概率相等的三个数字中的一个(33.3%)。我可以使用Random
类来实现这一目标吗?
100x跑步后选择的每个号码的百分比是多少?是否均匀地分别为33.3%?
答案 0 :(得分:1)
使用Random.nextInt(n)
方法选择0
和2
之间的数字。使用此选项可以选择三个值中的一个。
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
}