0

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

喜欢:

std::normal_distribution std::exponential_distribution

ETC..

我应该为每个使用一个随机数引擎,还是应该让它们都共享同一个生成器?

4

3 回答 3

0

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

有时,您可以通过只播种一个(并且仅用于此)随机引擎并使用它来播种其他随机引擎来作弊。

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

于 2013-05-15T19:21:49.870 回答
0

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

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

于 2013-05-15T19:22:03.907 回答
0

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

于 2013-05-15T19:31:44.890 回答