C++随机数不是随机的

标签 c++ random

我正在尝试使用 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/

相关文章:

c++ - 如何使用 std::greater 对 C++ 映射键进行排序?

带进位的补码乘法 (CMWC) RNG C winmain@16 编译问题

MySQL随机选择查询限制返回不同数量的结果(不需要)

c - 你如何制作一个在数字 2 或 3 之间进行选择的随机数生成器。(不是 1、2、3)

javascript - 如何将 javascript 变量添加到 HTML 图像 src 标记

Matlab:从每列中获取不带零的随机值

c++ - GPC 多边形裁剪器是否进行三角测量?

c++ - 使用 mprotect 保护整个地址空间

c++ - 有没有办法在不使用 (MFC) 动态对象创建的情况下在 CSplitterWnd 中创建 View ?

c++ - 有效地删除所有重复记录