首页  >  文章  >  后端开发  >  为什么循环迭代中我的随机数相同?

为什么循环迭代中我的随机数相同?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 10:02:01591浏览

Why are My Random Numbers the Same Within Loop Iterations?

循环迭代中的相同随机数

在执行 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中文网其他相关文章!

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