生成仅具有正数的高斯分布

Wha*_*sit 14 algorithm statistics normal-distribution gaussian poisson

有没有办法随机生成一组正数,使它们具有所需的均值和标准差?

我有一个算法来生成具有高斯分布的数字,但我不知道如何以保留均值和标准差的方式处理负数.
看起来泊松分布可能是一个很好的近似值,但它只需要一个均值.

编辑:回复中有一些混乱,所以我会试着澄清一下.

我有一组数字给出了平均值和标准差.我想生成一组大小相同的数字,具有相等的均值和标准差.通常情况下,我会使用高斯分布来执行此操作,但在这种情况下,我有一个额外的约束,所有值必须大于零.

我正在寻找的算法不需要是基于高斯的(从评论到目前为止判断,它可能不应该是)并且不需要是完美的.如果得到的数字集的平均值/标准偏差略有不同并不重要 - 我只想要一些通常会在球场上的东西.

jas*_*son 8

首先,您不能仅从高斯分布生成正值.

其次,我是否正确理解您正在尝试生成具有给定均值和标准差的随机分布?任何发行版都可以吗?如果是这样,让mean = m和standard deviation = s.我在假设m - s > 0.

let n = random integer modulo 2;
if n equals 0 return m - s
else return m + s
Run Code Online (Sandbox Code Playgroud)

此过程返回的值将具有均值m和标准差s.


Dav*_*man 7

您可以使用对数正态分布.


azh*_*lov 7

您可能正在寻找对数正态分布,如David Norman建议的那样,或者可能是指数,二项式或其他分布.如果您有一个生成一个分布的算法,那么生成符合另一个分布的数字可能不太好.但只有你知道你的数字是如何分配的.

在正态分布下,随机变量的范围是从负无穷大到正无穷大,所以如果你只是寻找正数,那么它不是高斯数.

不同的分布也具有独特的属性,例如,泊松分布,标准偏差总是等于平均值​​.(这就是为什么你的库函数不会从标准偏差参数中询问,只是平均值).

在最坏的情况下,您可以生成0到1之间的随机实数,并自行计算概率密度函数.(根据分布情况,这说起来容易做起来难得多).

  • ++ 最简单的方法是 1) 取每个原始数据点的对数,2) 得到它的均值和西格玛,3) 用该均值和西格玛生成高斯正态随机数,以及 4) 取每个数字的 exp . 结果应该与您开始时的结果相似。(要生成高斯随机数,一个简单的方法是将 +/- 0.5 范围内的 12 个均匀随机数相加。) (2认同)

Har*_*lan 5

为什么不使用重采样方法?如果您的样本中有n个数字,则只需从样本中随机抽取n次,然后替换即可。结果集的预期均值和方差与原始样本大致相同,但是通常会略有不同。

这就是说,在不知道为什么需要更多随机数的情况下,无法说出正确的答案是什么。一个人想知道您是否正在尝试解决错误的问题...