对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)
因此,如果您对超出期望范围的值进行采样,则将其丢弃并重新采样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句