代码:
#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进行编译。
这是: