使用C++的高斯分布没有均值和标准偏差

Gaussian distribution using C++ no mean and standard devition

本文关键字:标准 C++ 高斯分布 使用      更新时间:2023-10-16

我已经一致生成了随机数。现在我想使用高斯(正态)分布生成随机数。我不知道平均值和标准差。我读过这篇文章:http://www.johndcook.com/cpp_TR1_random.html#normal,但它需要一个平均值和标准差!我也知道Box-Muller变换是常用的。这样可以正确地生成具有正态分布的值。但我还是不知道平均值和标准偏差。请不要助推。有人能帮忙吗?

当你生成均匀分布(在一个段中)的随机数时,你需要两个参数:段的下边界和段的上边界。通常,它们分别是0和1,所以您可以从[0..1]范围中获得数字。

现在,要生成正态分布的数字,还需要两个参数:均值和标准差。然而,它们有着不同的含义。平均值是一个你生成的数字将围绕其聚集的数字:如果你指定,比如说15,你可能会看到11、17、13、21、9、12、14、11等,但(通常)不会看到290或-562。标准差(sigma)基本上决定了生成的数字与平均值的偏离程度。严格地说,可能会产生任何数量级的数字:即使你指定了平均值0和西格玛1e-6,你仍然可能得到1000——但这不太可能。

根据经验,几乎所有生成的数字都在[mean - 3 * sigma .. mean + 3 * sigma]范围内,我敢打赌,在你的生活中,你不会看到任何超出[mean - 5 * sigma .. mean + 5 * sigma]范围的数字。

有一个"标准"正态分布的概念:均值=0,西格玛=1。这意味着你得到的数字大多在[-3..3]范围内。

我希望它能有所帮助!