有没有办法随机生成一组正数,使它们具有所需的均值和标准差?
我有一个算法来生成具有高斯分布的数字,但我不知道如何以保留均值和标准差的方式处理负数。
看起来泊松分布可能是一个很好的近似值,但它只需要一个均值。
我有一组数字给我一个均值和标准差。我想生成一组大小相同的数字,具有相等的均值和标准差。通常情况下,我会使用高斯分布来执行此操作,但在这种情况下,我有一个额外的约束,所有值必须大于零。
我正在寻找的算法不需要基于高斯(根据评论到目前为止判断,它可能不应该是)并且不需要是完美的。如果得到的数字集的平均值/标准偏差略有不同并不重要 - 我只想要通常会出现在球场上的东西。
答案 0 :(得分:8)
首先,您不能仅从高斯分布中生成正值。
其次,我是否正确理解您正在尝试生成具有给定均值和标准差的随机分布?任何发行版都可以吗?如果是,请使用mean = m
和标准差= s
。我假设m - s > 0
。
let n = random integer modulo 2;
if n equals 0 return m - s
else return m + s
此流程返回的值的平均值为m
,标准差为s
。
答案 1 :(得分:7)
您可以使用log-normal发布。
答案 2 :(得分:7)
您可能正在寻找对数正态分布,正如David Norman建议的那样,或者exponential,binomial或其他一些分布。如果您有一个生成一个分布的算法,那么生成符合另一个分布的数字可能不太好。但只有你知道你的数字是如何分配的。
正态分布时,随机变量的范围是从负无穷大到正无穷大,所以如果你只是寻找正数,那么它不是高斯数。
不同的分布也具有独特的属性,例如,泊松分布,标准偏差总是等于平均值。 (这就是为什么你的库函数不会从标准偏差参数中询问,只有平均值)。
在最坏的情况下,您可以生成0到1之间的随机实数,并自行计算概率密度函数。 (根据分布情况,这可能说起来容易做起来难得多)。
答案 3 :(得分:5)
为什么不使用重采样方法?如果样本中有 n 个数字,只需从样本中随机抽取 n ,替换。结果集的预期均值和方差与原始样本大致相同,但通常会略有不同。
这说,不知道你为什么需要更多的随机数,就不可能说出正确答案是什么。人们想知道你是否在试图解决错误的问题......
答案 4 :(得分:4)
我无法抗拒 - 我真的很喜欢杰森的角度,但他的回答只涵盖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] = p x lowX +(1-p)x highX
s ^ 2 =方差(X)= E [X ^ 2] - E [X] ^ 2 = p x lowX ^ 2 +(1-p)x highX ^ 2 - m ^ 2
将lowX设置为0并在highX和p。
中解析答案 5 :(得分:2)
您可以使用任何具有正支持的分布,并且可以通过均值和方差来指定。例如,
答案 6 :(得分:1)
如果我理解正确,您希望从具有正面支持的分布中生成随机数。有很多可能的选择。
最简单卡方:http://en.wikipedia.org/wiki/Chi-square_distribution (这只是两个平方高斯人的总和)
所有不对称分布(指数,威布尔,帕累托,逆高斯,对数正态,伽玛)
歪曲家庭的所有分布(偏斜正常,偏斜的学生......)
以上所有功能都是这样的,任何从它们中抽取的随机数总是正面的。
答案 7 :(得分:-6)