随机数分布c ++ 11

时间:2013-05-15 19:14:04

标签: c++ random c++11

我有一个使用多个分发对象的程序:

像:

的std :: normal_distribution 的std :: exponential_distribution

等。

我应该为每一个使用随机数引擎,还是应该让所有引擎共享一个相同的生成器?

3 个答案:

答案 0 :(得分:0)

通常,您希望分布的每个实例都表示一个不相关的随机变量,这意味着您应该为每个变量添加一个新引擎。如果你的随机变量是相关的,你应该自己引入相关而不是重用随机引擎,这样你才能确保它被正确建模。

有时候,你可以通过播种一个(并且仅用于此)随机引擎来欺骗一点点,并使用它来播种其他随机引擎。

如果您不关心确保您的随机变量不相关(例如您没有做任何科学工作,而是编写游戏),您可能会忽略这一点,因为它通常无关紧要。

答案 1 :(得分:0)

通常的答案当然是取决于。

如果您正在尝试进行模拟工作并且会抽取大量随机数,那么最好为每个使用不同的引擎。否则,没关系。

答案 2 :(得分:0)

没有理由使用多个引擎。如果您要绘制大量随机数并且您认为结果看似相关,请将引擎更改为循环长度更长的引擎。