为什么重复运行生成伪随机数的简单片段总会产生相同的结果?

时间:2018-01-15 16:55:36

标签: c++ random

代码:

#include <fstream>
#include <random>
#include <functional>
using namespace std;

int nmax = 5;
long long amin = -10;
long long amax = 10;

int main()
{
    auto rand_ad = bind(uniform_int_distribution<long long>(amin, amax), default_random_engine(random_device{}()));
    ofstream out("testcase");

        out << nmax << ' ' << rand_ad() << '\n';
        for(int i = 0; i < nmax; i++) {
            out << rand_ad() << (i == nmax-1 ? '\n' : ' ');
        }

    return 0;
}

我重复运行此代码。无论是手动运行还是通过脚本运行,结果总是相同的。当我检查文件testcase的内容时,它总是包含:

5 -8
4 0 -1 3 -3

这让我感到困惑。据我所知,只要我写default_random_engine(random_device{}()),我就会播放伪随机引擎!!,结果应该不一样!

更重要的是,在Ideone上反复调用此代码(仅由cout替换为ofstream)会产生不同的结果:link

如果这很重要,请访问Windows,使用MinGW进行编译。

这是:

  • 我滥用C ++;
  • 我的PEBKAC安装了MinGW或调用该程序;
  • Windows的特点?

0 个答案:

没有答案