gpt4 book ai didi

c++ - 随机数生成的问题

转载 作者:太空狗 更新时间:2023-10-29 20:32:09 28 4
gpt4 key购买 nike

我正在学习编程类(class),我们使用的是 C++。我们有一个任务,在某个时候,我们需要编写一个函数,该函数将在 [upper, lower] 区间内返回一个随机数。我使用了以下内容:

lower + (int) (upper * (rand() / (RAND_MAX + 1.0)));

我没有忘记使用 srand((unsigned int) time(0)) 更改 srand

但是,我每次都得到相同的值!我向我的教授寻求帮助,经过一番调查,他发现 rand() 生成的第一个数字不是随机的......高阶位保持不变,并且自从这个实现使用它们,最终结果并不完全符合我的预期。

有没有比丢弃第一个值或使用余数来实现我想要的更优雅、更简单的解决方案?

非常感谢您的关注!

~弗朗西斯科

编辑:感谢大家的投入。我不知道 rand() 是这么烂的 RNG :P

最佳答案

鉴于 rand() 不是一个非常强大的随机数生成器,标准方法添加的少量偏差可能不是问题:(高-低)当然需要小于 MAX_RAND。

lower + rand() % (higher-lower+1);

已修复一个错误。

关于c++ - 随机数生成的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419919/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com