代码示例:
#include <iostream>
#include <random>
using namespace std;
int main()
{
mt19937 generator(0);
uniform_int_distribution<int> distr(0, 100);
for(auto i = 0; i < 10; ++i)
{
cout << distr(generator) << "\n";
}
}
此代码在Mac和Windows上生成不同的数字,但将uniform_int_distribution
替换为uniform_real_distribution
修复了该问题,并且生成的序列在两个平台上都相同。
我的问题是:为什么会这样?
答案 0 :(得分:3)
未指定分发算法,不同的实现可能会产生不同的结果。
(标准唯一指定的是原始随机位引擎; 那些产生可预测的结果。)