gpt4 book ai didi

python - np.random.normal 中的样本总和应该为零吗?

转载 作者:行者123 更新时间:2023-12-01 09:13:32 25 4
gpt4 key购买 nike

我正在研究机器人的运动模型。在每个时间步长中,都会测量机器人的运动,然后以测量值作为平均值和一个小的协方差西格玛值对正态分布进行采样,以模拟噪声。然后将这种嘈杂的运动添加到机器人之前的状态估计中。

但是当我让机器人保持静止时,这些噪声测量值似乎会累积,并且机器人“认为它正在移动。”

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

换句话说,您是否期望以下情况成立:

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()

其产量:enter image description here

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

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

关于python - np.random.normal 中的样本总和应该为零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448305/

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