首页 > 后端开发 > C++ > 为什么随机数在循环迭代中重复?

为什么随机数在循环迭代中重复?

Patricia Arquette
发布: 2024-11-05 01:00:02
原创
888 人浏览过

Why are Random Numbers Repeating in Loop Iterations?

循环迭代中的随机数重复

考虑以下问题:在运行 15 次迭代的循环中,dh.setDoors() 方法被称为。在 setDoors() 中,调用 srand(time(0)) 来设置随机数生成的种子。随后,使用 carSetter = rand()%3 1 或 Decisionr = rand()%2 1 等表达式生成随机数。

监视 carSetter 和 Decisionr 的值表明它们在每次循环迭代中保持不变,但在不同的循环运行之间进行更改。此行为是意外的,因为循环涉及 15 次独立迭代,这表明每个随机值应该有所不同。

调查原因

问题源于 srand( 的放置time(0)) 在每次迭代开始时。通过在每次循环中重置种子,伪随机数序列由迭代中的常量 time(0) 值有效地固定。由于 time(0) 在整个循环中保持不变,因此会生成相同的随机数序列。

解决问题

要解决此问题,建议:仅在程序开始时而不是在每次循环迭代中初始化随机数生成器一次。这确保了每次循环迭代使用不同的随机数序列。

修改后的实现将类似于以下内容:

srand(time(0));  // Call srand() once at the start of the program

while (...) {
    x = rand();
    y = rand();
}
登录后复制

通过此修改,x 和 y 的值将在循环迭代,产生不同随机数序列的所需行为。

以上是为什么随机数在循环迭代中重复?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板