当事情发生时随机化

时间:2013-04-28 12:48:40

标签: java math if-statement random double

我已经在我的游戏中实现了一个加电功能,我希望它有10%的几率在杀死僵尸时应用于玩家。我每次玩家子弹击中僵尸时都试过使用这个代码,但它确实不起作用。

double rand = Math.random() * 10 + 1;
if(rand == 1){
    power.setShrink(true);
}

我知道上电是有效的,因为如果我把它设置在if语句之外,玩家就会缩水。

我怎样才能让僵尸被杀的时候有10%的几率使用该玩家?

3 个答案:

答案 0 :(得分:2)

双打是浮点数。在您的情况下,它可以是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);
}

答案 1 :(得分:1)

您可以使用简单的Monte-Carlo选项:

if(Math.random() > 0.9){
   power.setShrink(true);
}

这给你一个随机的可能性,它可能会触发上电。

答案 2 :(得分:0)

您可以在类似的逻辑中使用Random.nextInt(10)

您当前的代码失败了,因为double很少会完全1

相关问题