如果我使用以下代码生成随机数:
#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';
答案 0 :(得分:0)
如果为具有相同值的伪随机引擎播种,它将生成相同的位序列,这将在生成相同数字的分布中转换。所以你需要存储传递给mt19937构造函数的种子。