循环迭代中的相同随机数
在执行 15 次的循环中,您在每次迭代中调用了 dh.setDoors()。在此函数内,调用 srand(time(0)) 来启动伪随机数的生成。但是,循环内对 rand() 的后续调用会导致在所有 15 次迭代中 carSetter 和 Decisionr 的值保持不变。
出现此行为是因为 srand(time(0)) 设置基于随机数生成器的种子在当前时间。由于循环执行速度很快,time(0) 每次都会返回相同的值,从而产生相同的伪随机数序列。
要解决此问题,建议仅调用 srand(time(0 )) 在程序开始时执行一次,通常遵循如下过程:
<code class="c++">srand(time(0)); for (int i = 0; i < 15; i++) { carSetter = rand() % 3 + 1; decider = rand() % 2 + 1; }</code>
通过仅执行一次此初始化,伪随机数生成器将为每次迭代生成唯一的数字序列循环,产生 carSetter 和 Decisionr 值的预期变化。
以上是为什么循环迭代中我的随机数相同?的详细内容。更多信息请关注PHP中文网其他相关文章!