gpt4 book ai didi

Java:随机生成的数字仅出现在给定范围的一小部分中

转载 作者:太空宇宙 更新时间:2023-11-04 09:28:40 25 4
gpt4 key购买 nike

我正在开发一款游戏,我希望我的敌人在 1-5 秒之间延迟生成。我该部分的代码如下所示:

@Override
public void run() {

try {
while (true) {
Random r = new Random();
int cooldownTime = r.nextInt((5000 - 1000) + 1) + 1000;
long lastSpawn = 0;
long time = System.currentTimeMillis();
if (time > lastSpawn + cooldownTime) {
System.out.println(cooldownTime);
addEnemies();
lastSpawn = time;
}

如果我正确理解 nextInt ,这应该每次都会间隔 1000-5000 毫秒产生敌人,但我的结果真的很奇怪,我不太明白为什么。这是如果我打印 cooldownTime 的示例。

2523

1190

1095

1061

1168

1119

1052

1159

1071

1076

1000

1394

1249

1070

等等...似乎第一个敌人确实是随机生成的,而其他敌人总是在 1000 左右。这种情况每次都会发生。有谁知道为什么会这样?我完全迷失了。

最佳答案

重复调用Random r = new Random();是极其病态的,并且会破坏生成器的统计特性。 (您获得的结果很可能是系统时钟时间的强大函数。)

执行一次该步骤,您的结果会好得多。 (还有比这更有效的方法来实现延迟 - 考虑 sleep - Java 编译器尚未优化烧录循环。)

另请注意,您的观察结果会因为您没有打印每个抽出的数字而变得更加复杂。

关于Java:随机生成的数字仅出现在给定范围的一小部分中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57375711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com