让我们看一下std::normal_distribution
的例子。
我知道有一些算法可以从正态分布中进行采样(参考:Wikipedia)。我知道标准规范通常会将其留给实现来选择算法(参考:SO)。
但是,有时需要在引擎盖下指定使用哪种算法。如何找到有关实施的详细信息?
(我承认我对这个世界中存在的C ++标准库的不同实现知之甚少。大多数情况下,我使用的是XCode / clang,gcc和MSVC附带的那些。)
答案 0 :(得分:2)
有时,实用程序的行为是由标准明确定义的,有时则不是。
以下是一个例子:
C ++ 14标准草案N4296在§26.5.8.5.1中说明:
normal_distribution
随机数分布产生随机数 数字x
根据概率密度函数分布
分布参数
µ
和σ
也称为此分布的均值和标准差。
我不知道PRNG,所以我无法向你解释这个公式,但我认为这是你要找的东西。
你有一个函数(更具体地说:“概率密度函数”),用于使用正态分布计算随机数。整个算法围绕此构建,可以在相应的标准库实现中找到。