我需要在100个机会中调用一些功能。现在我正在使用以下代码,但它的调用次数通常超过1%。
int randomItem = (int)(Math.random()*100);
if (randomItem >= 90 && randomItem <= 100)
{
// Do something ...
}
答案 0 :(得分:5)
当随机数介于90和100之间时,你会添加精灵。这样就有10%的几率。只测试Math.random()是< 0.01
。
答案 1 :(得分:2)
你必须说if (Math.random() * 100 >= 99.0)
,或者只是没有缩放,if (Math.random() >= 0.99)
或整数if (randomItem == 99)
。
Math.random()
返回[0.0, 1.0)
范围内的浮点数,因此100次为您提供范围[0.0, 100.0)
,转换为整数会得到{{1}范围内的整数}。
如果您不需要将其转换为其他任何内容,则可能无需转换为整数。
答案 2 :(得分:1)
你应该替换
randomItem >= 90 && randomItem <= 100
与
randomItem == 99
答案 3 :(得分:1)
现在你有1个10的机会。获得百分之一的机会这样做:
int chance = (int)(100*Math.random())
if (chance == 1) {
//Code
}
答案 4 :(得分:0)
Math.Random
会返回介于1和0之间的数字。要获得1%的几率,您希望代码看起来像这样:
Math.Random() <= 0.01
此外,nextDouble
类的Random
方法也以相同的方式使用。
r.nextDouble() < 0.01; //r is a instance of Random
这两种情况都会给你1%的机会。