我已经在我的游戏中实现了加电,当它杀死僵尸时,我希望它有10%的机会应用于玩家。我试着在每次玩家的子弹击中僵尸的时候使用这个代码,但它并不是真的有效。
double rand = Math.random() * 10 + 1;
if(rand == 1){
power.setShrink(true);
}我知道加电是有效的,因为如果我把它设置在if语句之外,播放器就会变小。
当僵尸被杀时,我如何使其有10%的几率应用该效果?
发布于 2013-04-28 20:55:48
双精度数是浮点数。在您的情况下,它可以是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);
}发布于 2013-04-28 20:53:29
发布于 2013-04-28 20:54:27
您可以在类似的逻辑中使用Random.nextInt(10)。
您当前的代码会失败,因为您的double很少会完全为1。
https://stackoverflow.com/questions/16263032
复制相似问题