java - 当事情发生时随机化

标签 java math if-statement random double

我在我的游戏中实现了一个能量提升,我希望它在杀死僵尸时有 10% 的机会应用到玩家身上。每当玩家的子弹击中僵尸时,我都尝试使用此代码,但它并没有真正起作用。

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

我知道 Prop 会起作用,因为如果我将它设置在 if 语句之外,播放器就会缩小。

我怎样才能让它在僵尸被杀死时有 10% 的几率应用到玩家身上?

最佳答案

double 是 float 。在您的情况下,它可以是 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);
}

关于java - 当事情发生时随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263032/

相关文章:

Java/JavaFX,从项目内部读取文件和jar文件

java - map 和 Jxls - 使用 XLSTransformer 分别处理不同的 Excel 工作表

math - `IntegralDomain`中的 `numeric-prelude`真的是一个积分域吗?

PHP Mysql - 将数据库 ID 中的所有值加 1,下一个值减去 1

java - 访问不同线程上的列表的输出是什么?

java - 给定一个 IP 地址列表,你如何找到最小值、最大值?

algorithm - 寻找包含所有负循环的最小子图

java - 为什么 Collat​​z 猜想程序不适用于 Java 中的大整数

c# - Foreach 和 FOR 循环效率与 if-else 的比较

javascript - 如何为我的剪刀石头布游戏编写一组更简洁的代码?