首页  >  文章  >  后端开发  >  为什么我的随机数在循环内是一致的?

为什么我的随机数在循环内是一致的?

Linda Hamilton
Linda Hamilton原创
2024-11-04 15:03:19361浏览

Why are my random numbers consistent within a loop?

了解迭代中一致的随机数

在提供的代码片段中,可以观察到循环迭代中生成的随机数保持一致。具体来说,尽管循环旨在生成唯一值,但“carSetter”和“decider”变量在 15 次迭代中保留相同的值。

这种行为是由于循环中放置了 srand(time(0)) 造成的。它确定后续调用 rand() 时返回的伪随机数序列。问题在于 time(0) 在循环执行过程中通常返回相同的值,这导致生成一系列一致的随机数。

为了纠正这个问题并确保真正的随机性,它将最初对 srand(time(0)) 的调用移到循环之外至关重要。通过这样做,您只需初始化随机数生成器一次,即可确保随机数序列在迭代中显着变化。以下代码演示了此修复:

srand(time(0)); // Called once at the program's start

for (int i = 0; i < 15; i++) {
    carSetter = rand() % 3 + 1;
    decider = rand() % 2 + 1;
    // ... Rest of the code within the loop
}

此修改允许循环按预期在每次迭代中生成不同的随机数。请注意,无需在循环内调用 srand(),因为伪随机数生成器将继续生成唯一值,直到您通过再次调用 srand() 显式重置它。

以上是为什么我的随机数在循环内是一致的?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn