Python np.random.normal和中的样本是否应为零?

Python np.random.normal和中的样本是否应为零?,python,numpy,statistics,robotics,normal-distribution,Python,Numpy,Statistics,Robotics,Normal Distribution,我正在制作机器人的运动模型。在每个时间步中,测量机器人的运动,然后我采样正态分布,以测量值作为平均值,并使用小的sigma值作为协方差,以模拟噪声。然后将该噪声运动添加到机器人先前的状态估计中 但当我让机器人保持静止时,这些嘈杂的测量值似乎在积累,机器人“认为它在移动” 这些随机样本不应该累积,而应该总和为零吗 换言之,您是否希望以下情况属实: 0 ~ np.sum([np.random.normal(0, 0.1) for _ in range(1000)]) 我已经尝试在一个显式循环中写出

我正在制作机器人的运动模型。在每个时间步中,测量机器人的运动,然后我采样正态分布,以测量值作为平均值,并使用小的sigma值作为协方差,以模拟噪声。然后将该噪声运动添加到机器人先前的状态估计中

但当我让机器人保持静止时,这些嘈杂的测量值似乎在积累,机器人“认为它在移动”

这些随机样本不应该累积,而应该总和为零吗

换言之,您是否希望以下情况属实:

0 ~ np.sum([np.random.normal(0, 0.1) for _ in range(1000)])
我已经尝试在一个显式循环中写出上面的内容,并在获取每个样本之前使用不同的数字对随机数生成器进行种子设定,但总和仍然远离零


这仅仅是随机数生成器的一个限制,还是我误解了正态分布的许多样本和应该为零的事实?

你的问题的简短答案是否定的。小心不要将独立随机变量数组的和与这些独立随机变量的平均值混为一谈

根据@Hongyu Wang在其评论中引用的文章,让我们验证以下内容:

如果X和Y是正态分布的独立随机变量,那么它们的和也是正态分布的

实际上,这就是你所做的。您已经创建了一个独立随机变量数组,并获取它们的和,而它们的和应该是正态分布的

我稍微修改了您的代码以演示:

import random, numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

x = [np.sum([np.random.normal(0,0.1) for _ in range(1000)]) for _ in range(1000)]

sns.distplot(x)
plt.show()
这将产生:

您可以通过执行以下操作来验证正态分布是否正确分布在
0
的平均值附近:

np.mean([np.random.normal(0, 0.1) for _ in range(1000)])

不,请注意std增量您正在合并正态分布的属性。查看
np.mean([np.random.normal(0,0.1)表示uu在范围(1000)])
,结果应该是您期望的结果,对吗?总和的期望值将为0。但一组样本的总和通常不会是0.0。理论上,正态分布随机数的无限大样本的平均值应为零,但实际上,不可能创建无限大样本。