我有一个使用多个分发对象的程序:
喜欢:
std::normal_distribution std::exponential_distribution
ETC..
我应该为每个使用一个随机数引擎,还是应该让它们都共享同一个生成器?
通常,您希望分布的每个实例都表示一个不相关的随机变量,这意味着您应该为每个实例配备一个新引擎。如果您的随机变量是相关的,您应该自己引入相关性,而不是重用随机引擎,这样您就可以确保它被正确建模。
有时,您可以通过只播种一个(并且仅用于此)随机引擎并使用它来播种其他随机引擎来作弊。
如果您不关心确保随机变量不相关(例如,您没有做任何科学工作,而是编写游戏),您可以忽略这一点,因为它通常无关紧要。
通常的答案是,当然,这取决于。
如果您正在尝试进行模拟工作并且会提取大量随机数,那么最好为每个使用不同的引擎。否则,也没什么大不了的。
没有理由使用多个引擎。如果您要绘制大量随机数并且您认为结果似乎相关,请将引擎更改为具有更大循环长度的引擎。