用Python+NumPy让概率论公式活起来:5个实战案例带你玩转统计模拟
概率论课本上那些晦涩的公式是否让你望而生畏?二项分布、大数定律、中心极限定理这些概念是否总在考试后就从脑海中消失?本文将彻底改变你对概率论的认知方式——通过Python代码,我们将把这些抽象理论转化为可视化的实验和可操作的案例。
1. 从抛硬币开始:理解二项分布的本质
二项分布描述了在n次独立试验中事件发生次数的概率分布。让我们用NumPy模拟抛硬币实验,直观感受这个分布。
python复制import numpy as np
import matplotlib.pyplot as plt
# 模拟1000次实验,每次抛硬币10次
n_trials = 1000
n_flips = 10
p_heads = 0.5
results = np.random.binomial(n_flips, p_heads, size=n_trials)
# 绘制结果直方图
plt.hist(results, bins=range(n_flips+2), density=True, alpha=0.7, rwidth=0.8)
plt.title('二项分布模拟 (n=10, p=0.5)')
plt.xlabel('正面朝上的次数')
plt.ylabel('概率')
plt.xticks(range(n_flips+1))
plt.grid(True)
plt.show()
运行这段代码,你会看到一个完美的钟形曲线——这正是二项分布在p=0.5时的对称形态。尝试修改p_heads的值(比如0.3),观察分布如何变得不对称。
关键发现:
- 当试验次数足够大时,二项分布的形状会趋近于正态分布
- 概率p决定了分布的偏斜方向
- 试验次数n影响分布的宽度和峰值高度
提示:在实际应用中,二项分布常用于质量控制(如次品率)、医学试验(如药物有效性)等领域。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 大数定律的直观验证:赌场为什么总能赚钱
大数定律告诉我们,随着试验次数的增加,样本均值会趋近于理论期望值。让我们用Python见证这一神奇现象。
python复制# 模拟掷骰子实验
dice_outcomes = [1, 2, 3, 4, 5, 6]
expected_value = np.mean(dice_outcomes) # 理论期望值3.5
sample_means = []
for n in range(1, 1001):
samples = np.random.choice(dice_outcomes, size=n)
sample_means.append(np.mean(samples))
plt.plot(range(1, 1001), sampl
