我已经统一生成了随机数。现在我想使用高斯(正态)分布生成随机数。我不知道平均值和标准差。我读过这篇文章:http ://www.johndcook.com/cpp_TR1_random.html#normal ,但它需要一个平均值和标准差!我也知道 Box-Muller 变换是常用的。这正确地产生具有正态分布的值。但同样我不知道平均值和标准偏差。请不要提升。有人可以帮忙吗?
user1838418
问问题
958 次
1 回答
2
当您生成均匀分布(在一个段中)的随机数时,您需要两个参数:段的下边界和段的上边界。通常,它们分别为 0 和 1,因此您可以从[0..1]
范围中获取数字。
现在,要生成正态分布的数字,您还需要两个参数:均值和标准差。然而,它们有不同的含义。平均值是您生成的数字将围绕的一个数字:如果您指定 15,您可能会看到 11、17、13、21、9、12、14、11 等,但(通常)不是 290或-562。标准差(sigma)基本上决定了生成的数字可能偏离平均值多远。严格来说,可能会产生任何数量级:即使您指定平均值 0 和 sigma 1e-6
,您仍然可能得到 1000 - 但不太可能。
根据经验,几乎所有生成的数字都在[mean - 3 * sigma .. mean + 3 * sigma]
范围内,我敢打赌,你不会[mean - 5 * sigma .. mean + 5 * sigma]
在生活中看到超出范围的任何东西。
有一个“标准”正态分布的概念:mean = 0,sigma = 1。这意味着您将获得大部分[-3..3]
范围内的数字。
我希望它有所帮助!
于 2012-11-22T13:12:20.007 回答