【问题标题】:Why does std::uniform_int_distribution not give the same answer across different systems?为什么 std::uniform_int_distribution 在不同系统中没有给出相同的答案?
【发布时间】:2017-02-26 23:56:28
【问题描述】:

代码示例:

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

为什么会这样?

【问题讨论】:

    标签: c++ c++11 random


    【解决方案1】:

    没有指定分配的算法,不同的实现可能会产生不同的结果。

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

    【讨论】:

      猜你喜欢
      • 2013-06-13
      • 1970-01-01
      • 2021-11-18
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多