如何重置Boost::variate_generator分布

How to reset Boost::variate_generator distribution?

本文关键字:generator 分布 variate Boost 何重置      更新时间:2023-10-16

我试图写一个函数,在一个最小和最大,并返回它们之间的随机双精度。我试图使用Boost::variate_generator来获得两个双精度之间的随机数,但问题是我不能改变它的分布,所以我必须每次调用一个新的种子。如果我每次调用伪随机数生成器时都生成一个新的种子,那么它就违背了伪随机数生成器的目的。

有办法得到下面这样的东西吗? Boost不是必需的,它似乎只是给出了很好的结果。

double getRandom(double min, double max);
{
    return randomNumberBetweenMinAndMax;
}

有很多方法可以做到这一点。您可以有一个带有默认参数的参数,该参数默认为某个全局可用对象。您可以使用一个局部作用域的静态变量来存储生成器。您可以使用存储生成器的文件作用域静态变量(如果它位于类中,则类似于类静态变量)。你可以有一个函数获取的单例生成器。

我偏向于使用全局可用对象作为默认参数。只要生成器是线程安全的,并且在创建任何线程之前初始化它,那么它通常是线程安全的。