获取随机数分布的状态(种子)

Lui*_*ves 0 c++ random numbers

请参阅以下 g++ 程序。

#define seed1 0
#include <iostream>
#include <random>


int main()
{
    double mean = 0.0;
    double stddev  = 1.0;

    std::mt19937 generator1 (seed1);

    std::normal_distribution<double> normal(mean, stddev);
    std::cerr << "Normal: " << normal(generator1) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我想获取生成器 1 的状态(作为种子)并删除生成器 1 以便稍后使用新种子再次实例化分布,并在我离开的地方继续我想将此代码放入函数中并调用它来生成高斯点在我想要的开始状态。并在函数结束时将状态保存为种子。

Bli*_*ndy 7

将状态保存为种子

这永远不会发生,生成器的状态不仅仅是它的种子。

但是,生成器(以及您在问题中忽略的分布)确实提供了通过流上的<</>>运算符分别存储和检索其状态的功能:

stream << generator1 << normal;
Run Code Online (Sandbox Code Playgroud)

然后:

mt19937 generator;
stream >> generator;

normal_distribution<double> distribution;
stream >> distribution;
Run Code Online (Sandbox Code Playgroud)