You need to enable JavaScript to run this app. 中心极限定理验证模拟:满足样本量要求为何样本均值不服从正态分布
优惠活动
大模型
产品
解决方案
定价
更多

中心极限定理验证模拟:满足样本量要求为何样本均值不服从正态分布

问题背景

晚上好。
我正在学习中心极限定理(Central Limit Theorem),作为练习,我运行了模拟实验尝试计算公平骰子的均值(这是一个入门级示例问题)。
我一共采集了4000份样本,每份样本对应掷骰子50次(代码附在文末)。我计算了这4000份样本各自的均值,随后使用matplotlib绘制了这4000个样本均值的直方图,分箱大小设置为0.03。
实验结果如下:
实验结果图

问题咨询

本次实验已经满足CLT的样本量要求(样本量≥30),为何得到的样本均值不服从正态分布?
具体来看,直方图看起来就像两个正态分布叠加在一起;更奇怪的是,“外侧”的分布看起来是“离散”的,空白间隔出现的位置规律固定,这是什么原因导致的?
实验结果看起来存在系统性偏差,恳请各位帮忙解答,非常感谢。

补充代码

以下是我用来生成4000个样本均值的代码:

"""
Take multiple samples of dice rolls. For
each sample, compute the sample mean.

With the sample means, plot a histogram.
By the Central Limit Theorem, the sample
means should be normally distributed.

"""

sample_means = []

num_samples = 4000

for i in range(num_samples):
    # Large enough for CLT to hold
    num_rolls = 50
    
    sample = []
    for j in range(num_rolls):
        observation = random.randint(1, 6)
        sample.append(observation)
    
    sample_mean = sum(sample) / len(sample)
    sample_means.append(sample_mean)

注:运行上述代码前需要先导入random库,否则会触发名称错误。


问题解答

你观察到的异常是可视化参数设置不当导致的伪影,你的实验本身没有问题,完全符合中心极限定理的结论,不存在系统性偏差,具体原因如下:

  • 首先,你的样本均值本身只能取离散值:单次掷骰子的结果是1到6的整数,50次掷骰子的总和也必然是整数,因此样本均值 = 总和/50,所有可能的取值只能是间隔为0.02的离散点(比如3.00、3.02、3.04、3.06,以此类推),不存在其他取值的可能。
  • 你设置的分箱宽度为0.03,和0.02的离散间隔完全不对齐:这就会出现有的分箱刚好覆盖2个离散取值点、有的分箱只覆盖1个、有的分箱刚好落在两个离散值的空隙里完全没有数据的情况,最终呈现出规律的空白间隔、高低柱交替的效果,看起来就像两个正态分布叠加在一起。

你只需要调整直方图的分箱宽度为0.02的整数倍(比如设置分箱宽度为0.02,或者直接设置为更宽的0.1),就能看到完全符合预期的正态分布直方图。比如你可以把matplotlib绘制直方图的代码改为以下形式即可:

import matplotlib.pyplot as plt
import numpy as np
plt.hist(sample_means, bins=np.arange(2.5, 4.5, 0.02))
plt.show()

内容的提问来源于stack exchange,提问作者nigel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:42:00