了解迭代中一致的随机数
在提供的代码片段中,可以观察到循环迭代中生成的随机数保持一致。具体来说,尽管循环旨在生成唯一值,但“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中文网其他相关文章!