std :: uniform_int_distribution在Mac和Windows上的不同行为

时间:2017-02-26 23:56:29

标签: c++ c++11 random

代码示例:

#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修复了该问题,并且生成的序列在两个平台上都相同。

我的问题是:为什么会这样?

1 个答案:

答案 0 :(得分:3)

未指定分发算法,不同的实现可能会产生不同的结果。

(标准唯一指定的是原始随机位引擎; 那些产生可预测的结果。)