我正在尝试使用 C++ 生成随机数,但它们似乎不是很随机。我当然知道它们只是伪随机的,但我发现实际上什至没有将其切割为伪随机。这是我的代码
#include <iostream>
#include <time.h>
int main(){
srand (time(NULL));
std::cout << (double) rand() / (double) RAND_MAX;
return 0;
}
我编译和运行这个 cpp 文件得到的结果总是从 0.63 开始,后面跟着一些看似随机的数字。
有什么我想念的吗?我没有使用 srand 正确初始化随机数生成器吗?为什么数字不是 0 到 1 之间的随机数?
谢谢
最佳答案
看起来像是rand
的实现在您的编译器上非常差,初始随机值高度依赖于种子值。在开始使用返回值之前,您可以生成并丢弃多个随机值。
或者,更好的是,不要调用 rand
.使用 <random>
提供的设施标题。
关于C++随机数不是随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39382327/