首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当有事情发生时随机化

当有事情发生时随机化
EN

Stack Overflow用户
提问于 2013-04-28 20:48:40
回答 3查看 70关注 0票数 1

我已经在我的游戏中实现了加电,当它杀死僵尸时,我希望它有10%的机会应用于玩家。我试着在每次玩家的子弹击中僵尸的时候使用这个代码,但它并不是真的有效。

代码语言:javascript
复制
double rand = Math.random() * 10 + 1;
if(rand == 1){
    power.setShrink(true);
}

我知道加电是有效的,因为如果我把它设置在if语句之外,播放器就会变小。

当僵尸被杀时,我如何使其有10%的几率应用该效果?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-28 20:55:48

双精度数是浮点数。在您的情况下,它可以是1到11之间的任何数字,精度最高可达53位二进制位。因此,它不仅可以是1,还可以是1.01,1.02,等等。因此,它恰好为1的概率可以忽略不计。

在生成随机整数时,最好使用Random.nextInt

代码语言:javascript
复制
Random r = new Random(); //only do this once

if(r.nextInt(10) == 0){
    power.setShrink(true);
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-28 20:53:29

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

代码语言:javascript
复制
if(Math.random() > 0.9){
   power.setShrink(true);
}

这给了你一个随机的机会,10个中有1个可能会触发通电。

票数 1
EN

Stack Overflow用户

发布于 2013-04-28 20:54:27

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16263032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档