e^(正态分布变量)的Python乘积不等于1.0?

e^(正态分布变量)的Python乘积不等于1.0?,python,statistics,distribution,normal-distribution,Python,Statistics,Distribution,Normal Distribution,平均值为0的正态分布变量之和的平均值为零。这很有效。e与均值为0的正态分布变量的幂的乘积应为1。但是当我在Python中这样做时,我得到了一个高于1的产品。对此有何解释 sumProduct = 0.0 iterations = 100000 for j in range(iterations): product = 1.0 for i in range(10): normalVar = numpy.random.normal(0.0, 0.1)

平均值为0的正态分布变量之和的平均值为零。这很有效。e与均值为0的正态分布变量的幂的乘积应为1。但是当我在Python中这样做时,我得到了一个高于1的产品。对此有何解释

sumProduct = 0.0
iterations = 100000

for j in range(iterations):

    product = 1.0
    for i in range(10):
        normalVar = numpy.random.normal(0.0, 0.1)
        product *= math.exp(normalVar)

    sumProduct += product

print sumProduct/iterations # Outputs 1.05

它不应该输出1.0吗?产品变量的预期值应为1.0,所有产品变量的平均值应为1.0。那么为什么它输出1.05呢?(更改迭代次数和标准偏差会更改输出,但它始终大于一)。谢谢你的帮助

对数正态变量的平均值为exp(mu+1/2 sigma^2),其中mu和sigma是相关正态分布的参数。在这种情况下,相关的正态分布是变量“乘积”的对数分布,其mu=10乘以0.0,sigma^2=10乘以0.1^2=0.1。因此,对数正态变量的平均值为exp(0.0+1/2乘以0.1)=exp(0.05),约为1.05

对数正态变量的平均值为exp(mu+1/2 sigma^2),其中mu和sigma是相关正态分布的参数。在这种情况下,相关的正态分布是变量“乘积”的对数分布,其mu=10乘以0.0,sigma^2=10乘以0.1^2=0.1。因此,对数正态变量的平均值为exp(0.0+1/2乘以0.1)=exp(0.05),约为1.05

math.exp()
移出循环,它会减少错误:
math.exp(sum(numpy.random.normal(0.0,0.1)for i in xrange(trials))
感谢Blender。但是如果我需要在整个循环中使用乘积,比如当I==2,然后当I==3,等等,该怎么办。。。?当你说error时,这是舍入错误还是代码中的错误?一般来说,
E[f(X)]≠ f(E[X])
。指数函数是一类函数,它告诉我们,
f(E[x])将
math.exp()
从循环中移出,它应该减少错误:
math.exp(sum(numpy.random.normal(0.0,0.1)对于x范围内的i(trials))
感谢Blender。但是如果我需要在整个循环中使用乘积,比如当I==2,然后当I==3,等等,该怎么办。。。?当你说error时,这是舍入错误还是代码中的错误?一般来说,
E[f(X)]≠ f(E[X])
。指数函数是一类函数,它告诉我们
f(E[x])