是否有可能获得先前由std :: uniform_int_distribution生成的随机数?

时间:2016-08-28 09:48:37

标签: c++11 random

如果我使用以下代码生成随机数:

#include <iostream>
#include <random>

int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(0, 999);

    for (int n=0; n<1000; ++n)
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}

是否可以在循环结束后以相反的顺序获取先前生成的值(不将它们保存到数组中等等),并执行以下操作:

    for (int n=0; n<1000; ++n)
        std::cout << GetPrev(dis, gen) << ' ';
    std::cout << '\n';

1 个答案:

答案 0 :(得分:0)

如果为具有相同值的伪随机引擎播种,它将生成相同的位序列,这将在生成相同数字的分布中转换。所以你需要存储传递给mt19937构造函数的种子。