如何重置Boost :: variate_generator发行版?

时间:2013-05-16 18:07:24

标签: c++ random boost-random

我正在尝试编写一个接受min和max的函数,并在它们之间返回一个随机的double。我试图使用Boost :: variate_generator来获取两个双精度数之间的随机数,但问题是我无法更改它上的分布,因此我必须在每次调用时创建一个新的种子。如果我每次调用它都会生成一个新的种子,它就会失去伪随机数生成器的目的。

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

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

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。您可以使用默认参数的参数,该默认参数默认为某个全局可用对象。您可以拥有一个存储生成器的本地范围的静态变量。您可以拥有一个文件范围静态变量(类似于类中的静态,如果它在类中),它存储生成器。您可以拥有该函数获取的单例生成器。

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