在Python中生成具有特定方差的随机数

2 投票
3 回答
8604 浏览
提问于 2025-04-17 09:59

在一个Python程序中,我需要生成符合正态分布的随机数,并且这个随机数的方差需要由用户来控制。请问我该怎么做呢?

3 个回答

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()

在这里输入图片描述

11

使用 random.normalvariate (如果你不需要线程安全的话,可以用 random.gauss),并把 sigma 参数设置为方差的平方根。

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。

撰写回答