”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么我的随机数在循环内是一致的?

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

发布于2024-12-23
浏览:567

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 

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

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3