gpt4 book ai didi

python - 使用 Box-Muller 方法从正态分布生成值

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:00 29 4
gpt4 key购买 nike

我正在编写一个小函数来使用 Box-Muller 方法从正态分布生成值,但我得到的是负值。

这是我的源代码

import random

def generate_normal(mu, sigma):
u = random.random()
v = random.random()

z1 = sqrt(-2 * log(u)) * sin(2 * pi * v)
z2 = sqrt(-2 * log(u)) * cos(2 * pi * v)

x1 = mu + z1 * sigma
x2 = mu + z2 * sigma

return x2

我错过了什么?我在 x1x2 中都得到了负值。例如:

mu: 400
sigma: 150
u: 7.27333176449e-05
v: 0.642384573173
z1: -3.40497345242
x1: -110.746017863

和:

x2: -9.79324023117

最佳答案

单位normal distribution以零为中心,两侧有小尾部到正负无穷大。 99.7% of your values会在三个标准差以内,其他 0.3% 不会。

enter image description here

在此示例中,平均值为 400,标准差为 150,99.7% 的值将落在平均值的三个标准差范围内 - 区间 [-50,850],其中包括负数。因此,立即期待负数。

至于其他 0.3% 的值,请记住这是您数字的 3/1000 - 一点也不罕见。

如果您想要具有有限支持的“钟形曲线”分布,请尝试 beta distribution .

最后,除非这是一个学术练习,否则没有必要推出你自己的等同于 numpy.random.normal() 的东西。 .

关于python - 使用 Box-Muller 方法从正态分布生成值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951883/

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