gpt4 book ai didi

python - 我将如何在具有高斯分布的两个值之间产生随机数

转载 作者:行者123 更新时间:2023-11-28 21:17:18 29 4
gpt4 key购买 nike

刚开始接触 Python,在书中做了一些练习。我需要生成 200 到 600 之间的 800 个随机数,具有高斯分布。我已经走到这一步了:

x = pylab.zeros(800,float)
for x in range (0,800):
y = random.gauss(550,30)

但是,只要所有 800 符合高斯分布,这不是会产生任何数字吗?我需要 200 到 600 之间的值。

最佳答案

高斯分布没有界限,但您可以使您不太可能在您的范围之外进行采样。例如,您可以对平均值为 400 且标准差为 200/3 的数字进行采样,这意味着超出范围 [200, 600] 将超出 3 个标准差。

mean = 400
stdev = 200/3 # 99.73% chance the sample will fall in your desired range

values = [random.gauss(mean, stdev) for _ in range(800)]

如果你想要一个有界的伪高斯分布,你可以这样做

values = []
while len(values) < 800:
sample = random.gauss(mean, stdev)
if sample >= 200 and sample < 600:
values.append(sample)

因此,如果您对超出所需范围的值进行采样,则将其丢弃并重新采样。

关于python - 我将如何在具有高斯分布的两个值之间产生随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841227/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com