Python 用均匀分布验证中心极限定理

均匀分布 X~U(a, b)
E(x)=1/(b-a) D(x)=(b-a)**2/12

正态分布/高斯分布 X~N(μ, σ2)
E(x)=μ D(x)=σ2
标准正态分布 N(0, 1)

中心极限定理
随机变量{Xi}独立同分布, 有相同的方差和期望。令Yn=X1+X2+````+Xn,则Zn=(Yn-E(Yn))/sqrt(D(Yn)=(∑Xi-nμ)/(sqrt(n)*σ), Zn~N(0, 1)
并且∑Xi~N(nμ, nσ2)
代码做法:生成10000个随机数,这些随机数满足均匀分布,这算做一次实验。重复5000次,多次均匀分布的叠加得到的图像就是正态分布的图像

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# 定义配置文件
mpl.rcParams['font.sans-serif'] = [u'SimHei'] # rc参数可以修改默认的属性
mpl.rcParams['axes.unicode_minus'] = False #轴线.负号,False表示正常显示负号


### 6.2 用均匀分布验证中心极限定理
Y = np.zeros(10000) # 生成(10000,)的元素全为0的列向量
for i in range(5000): # 重复5000次实验(重复的是均匀分布)
    # random.uniform()函数,随机采样
    Y += np.random.uniform(-5, 5, 10000) # 生成X~U(-5, 5)的均匀分布,并且此均匀分布Xn中n=10000;将生成的均匀分布中的x1,x2,````x10000依次放入空向量中,重复5000次实验
# 得到的Yi相当于∑Xi
Y /= 1000 # 除不除应该都可以吧,图像的形状都是一样的
plt.hist(Y, bins=100, color='g', alpha=0.5, density=1, label=u'均匀分布叠加5000次') # normed/density向量归一化,各元素平方和为1,方向不变;bins生成100个柱体
plt.legend(loc='upper left')
plt.grid()
plt.show()

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务