20

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

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

编辑:回复中有一些混乱,所以我会尽力澄清。

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

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

4

7 回答 7

9

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

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

不同的分布也具有独特的性质,例如,对于泊松分布,标准差始终等于均值。(这就是为什么您的库函数不询问标准偏差参数,只询问平均值的原因)。

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

于 2009-11-05T21:22:18.300 回答
8

您可以使用对数正态分布

于 2009-11-05T20:49:19.583 回答
8

首先,您不能只从高斯分布中生成正值。

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

let n = random integer modulo 2;
if n equals 0 return m - s
else return m + s

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

于 2009-11-05T20:51:27.800 回答
5

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

这就是说,如果不知道为什么需要更多随机数,就不可能说出正确的答案是什么。有人想知道您是否正在尝试解决错误的问题...

于 2009-11-07T21:54:46.007 回答
4

我无法抗拒 - 我真的很喜欢 Jason 的角度,但不高兴他的回答只涵盖 m > s 的情况,所以我按照他的想法制定了一个通用解决方案。
给定 m,s 和正项的最简单分布是

概率为 p,返回 0
,概率为 (1-p),返回 m / (1-p)
其中 (1-p) = m^2 / (m^2 + s^2)

证明:对于具有两个结果的分布 X,lowX 概率为 p,highX 概率为 (1-p),
m = E[X] = px lowX + (1-p) x highX
s^2 = Variance(X) = E [X^2] - E[X]^2 = 像素低X^2 + (1-p) x 高X^2 - m^2

将 lowX 设置为 0 并在 highX 和 p 中解析。

于 2009-11-06T20:48:44.523 回答
3

您可以使用任何具有正支持的分布,并且可以通过均值和方差指定。例如,

  • 单参数分布通常不起作用。例如,除非您的方差始终是其平均值的两倍,否则卡方将不起作用。除非您的方差等于您的均方,否则类似的指数将不起作用。
  • 某些双参数分布在某些情况下不起作用。除非方差小于您的平均值,否则二项分布​​将不起作用。同样,除非您的方差大于平均值的 2 倍且小于平均值的 4 倍,否则非中心卡方将不起作用!
  • 然而,对数正态和伽玛在所有情况下都可以使用。
于 2010-01-13T09:44:48.940 回答
1

如果我理解正确,您想从具有积极支持的分布中生成随机数。有很多可能的选择。最简单的是

卡方:http ://en.wikipedia.org/wiki/Chi-square_distribution (这只是两个平方高斯的总和)

所有不对称分布(指数、威布尔、帕累托、逆高斯、对数正态、伽玛)

来自偏斜家族的所有分布(偏斜正态、偏斜学生……)

所有上述函数都是这样的,从它们中的任何一个中抽取的任何随机数都将始终为正。

于 2009-11-06T20:18:00.560 回答