S.O的C ++ RNG示例打印非随机数字(在我的计算机上)

时间:2018-07-27 20:35:54

标签: c++ c++11 random

在{@ 3}}上用户@Cubbi提供的示例中,我一直难以生成随机整数。我已按照以下步骤设置程序:

  

rand_test.cpp

#include <iostream>
#include <random>

int main()
{
    std::random_device rd;
    std::mt19937 eng(rd());
    std::uniform_int_distribution<> distr(25, 63);

    for(int n = 0; n < 40; ++n)
        std::cout << distr(eng) << ' ';
}

...并使用g++ rand_test.cpp -std=c++11进行编译


我在大约一分钟的时间内执行了四次程序,并收到了完全相同的数字序列:
46 53 38 60 25 48 59 45 62 63 31 50 37 45 52 55 34 27 ...
在研究了这个问题并开始这个问题(10-15分钟)之后,我再次执行了该命令,并再次执行了相同的输出。然后我重新编译,输出与以前相同。是什么原因,如何解决?

  • 编译器:TDM-GCC-64
  • OS :Windows 10 Home(64位)

编辑:问题在于MinGW无法正确编译std::random_device。一种可行的替代方法是使用std::chrono为生成器添加种子,如this question.

所示

0 个答案:

没有答案