随机数分布c++11

Random number distributions c++11

本文关键字:c++11 分布 随机数      更新时间:2023-10-16

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

:

std:: normal_distributionstd:: exponential_distribution

等。

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

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

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

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

通常的答案当然是,视情况而定。

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

没有理由使用多个引擎。如果你打算绘制大量随机数字,并且你认为结果似乎是相关的,那么将引擎更改为具有更大周期长度的引擎。