首页 > 后端开发 > C++ > 正文

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

Mary-Kate Olsen
发布: 2024-11-04 10:02:01
原创
590 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!