algorithm - 生成 n 个(严格为正)值的列表,使得该列表具有预定的均值 x 和标准差。开发者是

标签 algorithm math random distribution

我想生成一个包含 n 个严格正值的列表,以便该列表具有预定的均值和标准差(可以接近/不精确)。我正在使用均匀分布的方程来计算期望和方差并求解“a”和“b”,但是方程组(对于特定的均值和标准偏差。我想要)没有 a、b >= 0 的解. 我想知道是否有一种即插即用的方法可以在任何编程语言中做到这一点,但希望在 Python 中。谢谢!

Ex:生成 84 个正值的列表,均值 ~= 60/84 = 0.71,std.dev。 ~= 1.7

最佳答案

回答

使用NumPy从具有尺度参数 theta = 方差/均值和形状参数 k = 均值/theta 的 Gamma 分布生成样本。

例子

>> import numpy

>> mu = 0.71
>> var = 1.7**2 
>> theta = var / mean 
>> k = mu / theta

>> samples = numpy.random.gamma(k, theta, 1000)

>> numpy.mean(samples)
0.71622189354608201

>> numpy.std(samples) 
1.7865898752966483

评论

您提供的约束未指定分布。您针对 another answer 发表的一些评论作为问题的一部分会有所帮助。特别是,您似乎正在尝试对队列中的到达进行建模,例如泊松过程。正如您所指出的,泊松分布的均值和方差是相同的,即 lambda 参数。但是,将 lambda 本身视为一个随机变量。泊松分布先于 Gamma 分布的共轭。

当形状参数 k > 0 和尺度参数 theta > 0 时,gamma distribution均值 = k * theta 和方差 = k * theta^2。因此,theta 是方差/均值 > 0,k 是均值/theta > 0。由于 gamma 分布有正支持,这很容易回答你的问题。

关于algorithm - 生成 n 个(严格为正)值的列表,使得该列表具有预定的均值 x 和标准差。开发者是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159423/

相关文章:

algorithm - 如何在调用 C 例程之前有效地转换 Fortran 数组

c++ - 二维矩阵中的二进制搜索

math - 平移等方差及其与卷积层和空间池化层的关系

math - 比较 l*a*b* 颜色

Javascript:Math.min() 返回 NaN

c# - 随机概率选择

algorithm - 如何在没有额外堆内存的情况下循环移动数组?

卡车绕一圈加油站移动的算法

PHP:在 GNU MP 中获取 "number of bits per limb"

c - 生成具有几何分布的数字的最快方法