如何改变高斯分布中的种子(增强)

时间:2018-02-04 12:24:12

标签: c++ random boost random-seed

我在 How to use boost normal distribution classes?

上找到了这个例子
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>

int main() {
    boost::mt19937 rng; // I don't seed it on purpouse (it's not relevant)

    boost::normal_distribution<> nd(0.0, 1.0);

    boost::variate_generator<boost::mt19937&, 
                        boost::normal_distribution<> > var_nor(rng, nd);

    int i = 0; 
    for (; i < 10; ++i) {
        double d = var_nor();
        std::cout << d << std::endl;
    } 
}

我想知道我在代码中添加了什么来每次生成不同的随机数。我在for循环中使用了名为generated d的数字,但是每次运行程序时我都会得到相同的数字。谢谢!!!!

2 个答案:

答案 0 :(得分:0)

你为引擎播种。参见例如这个答案包含许多发行版:How do I use Boost Random

答案 1 :(得分:0)

我以这种方式解决了它似乎有效:

我添加了库:

      #include<time.h>

并修改这个:

    boost::mt19937 rng(time(0));

通过这种方式,我猜种子是计算机的时间。