我在我的游戏中实现了一个加电功能,我希望它在杀死僵尸时有 10% 的机会应用到玩家身上。每次玩家子弹击中僵尸时,我都尝试使用此代码,但它并没有真正起作用。
double rand = Math.random() * 10 + 1;
if(rand == 1){
power.setShrink(true);
}
我知道加电是有效的,因为如果我将它设置在 if 语句之外,播放器就会缩小。
我将如何做到这一点,以便在僵尸被杀死时有 10% 的几率应用玩家?
我在我的游戏中实现了一个加电功能,我希望它在杀死僵尸时有 10% 的机会应用到玩家身上。每次玩家子弹击中僵尸时,我都尝试使用此代码,但它并没有真正起作用。
double rand = Math.random() * 10 + 1;
if(rand == 1){
power.setShrink(true);
}
我知道加电是有效的,因为如果我将它设置在 if 语句之外,播放器就会缩小。
我将如何做到这一点,以便在僵尸被杀死时有 10% 的几率应用玩家?
双精度数是浮点数。在您的情况下,它可以是从 1 到 11 的任何数字,最高可达 53 位二进制精度。所以它不仅可以是 1,还可以是 1.01、1.02 等。因此,它恰好是 1 的几率可以忽略不计。
Random.nextInt
生成随机整数时最好。
Random r = new Random(); //only do this once
if(r.nextInt(10) == 0){
power.setShrink(true);
}
您可以Random.nextInt(10)
在类似的逻辑中使用。
您当前的代码失败了,因为您double
很少会完全正确1
。