2

在 Python 程序中,我需要生成具有特定用户控制方差的正态分布随机数。我怎样才能做到这一点?

4

3 回答 3

11

使用random.normalvariate(或者random.gauss如果您不需要线程安全),并将sigma参数设置为方差的平方根。

于 2012-01-11T07:38:23.953 回答
7
import math
from random import gauss

my_mean = 0
my_variance = 10

random_numbers = [gauss(my_mean, math.sqrt(my_variance)) for i in range(100)]

这会得到 100 个正态分布的随机数,均值为 0,方差为 10。

于 2012-01-11T07:41:45.950 回答
1

如果要从特定范围的数字中采样,可以这样做:

mu = 350
variance = 10
sigma = math.sqrt(variance)
x = np.linspace(1,572,572)
p = scipy.stats.norm.pdf(x, mu, sigma)
random_number = np.random.choice(x, p=p/np.sum(p))

这样,我们还可以绘制分布图:

plt.plot(x, p)
plt.show()

在此处输入图像描述

于 2021-02-03T17:56:41.273 回答