我正在尝试编写一个接受min和max的函数,并在它们之间返回一个随机的double。我试图使用Boost :: variate_generator来获取两个双精度数之间的随机数,但问题是我无法更改它上的分布,因此我必须在每次调用时创建一个新的种子。如果我每次调用它都会生成一个新的种子,它就会失去伪随机数生成器的目的。
有没有办法在下面得到这样的东西,Boost不是必需的,它似乎只是给出了好的结果。
double getRandom(double min, double max);
{
return randomNumberBetweenMinAndMax;
}
答案 0 :(得分:0)
有很多方法可以做到这一点。您可以使用默认参数的参数,该默认参数默认为某个全局可用对象。您可以拥有一个存储生成器的本地范围的静态变量。您可以拥有一个文件范围静态变量(类似于类中的静态,如果它在类中),它存储生成器。您可以拥有该函数获取的单例生成器。
我偏向于使用全局可用对象作为默认值的默认参数。它通常是线程安全的,只要生成器是线程安全的,并且在创建任何线程之前初始化。