我试图做到这一点,所以我的游戏有1/100的机会获得重击。我不确定这是怎么做到的。我很确定这不起作用:
criticalChance = crit.nextInt(1)/100;
我该如何做到这一点?
答案 0 :(得分:3)
您可以使用
if (Math.random() > 0.99) {
System.out.println("You have hit the 1 % chance!");
}
Math.random()
返回在单位间隔[0,1]中均匀分布的double
,因此它将大于0.99,概率为1%。
答案 1 :(得分:1)
执行(crit.nextInt(100))
,然后使用if检查随机数是否为50,例如。
答案 2 :(得分:1)
nextInt(int)
方法返回0
之间的整数,包括整数,不包括整数。在您的情况下,它将返回0
,包括{和1
之间的整数,不包括。这意味着总是0。
如果你想处理概率,那么你可以使用nextDouble()
代替nextInt(int)
,这会返回0.0
和1.0
之间的数字。然后你会看到这个数字是否小于概率。在您的情况下,1%(= 0.01
),它应该是:
if(crit.nextDouble() < 0.01) //will happen 1% of the time
希望有所帮助
答案 3 :(得分:0)
使用Random
类并使用它生成一个浮点数。它将是介于0.0和1.0之间的数字。所以要有百分之一的机会,检查它是否小于1/100 == 0.01。
Random crit = new Random();
boolean isCriticalHit = crit.nextFloat() < 0.01;