练习:中心极限定理
#coding:utf-8
#/usr/bin/python
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
if __name__ == '__main__':
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False # win正常显示中文设置
t = 1000 #次数
a = np.zeros(10000) #生成10000个0的数组
for i in range(t):
a += np.random.uniform(-5, 5, 10000)
a /= t
#for循环首先生成(-5,5)的10000个随机数加到a中,然后做t次,
#最后的a每一维上的数都是加了1000个(-5,5)的随机数
#然后除以t,得到这1000个随机数的平均值
plt.figure(figsize=(5,5),facecolor='w')
plt.hist(a,bins=30,color='b',alpha = 0.5,normed=True,label='均匀分布叠加')
plt.grid()
plt.legend(loc='upper right')
plt.show()
拓展
lamda = 7
p = stats.poisson(lamda)
y = p.rvs(size=1000)#对p随机采样1000次
mx = 30
r = (0, mx)#直方图的宽度参数
bins = r[1] - r[0]#均分多少份
plt.figure(figsize=(15, 8), facecolor='w')
plt.subplot(121)
plt.hist(y, bins=bins, range=r, color='g', alpha=0.8, normed=1)
t = np.arange(0, mx+1)
plt.plot(t, p.pmf(t), 'ro-', lw=2)#取(0,30)的概率质量函数,也就是(0,30)中的数每一个数出现的次数
plt.grid(True)
N = 1000
M = 10000
plt.subplot(122)
a = np.zeros(M, dtype=np.float)
p = stats.poisson(lamda)
for i in np.arange(N):
a += p.rvs(size=M)#对p进行1000随机采样,每次采取10000个数字
a /= N
plt.hist(a, bins=20, color='g', alpha=0.8, normed=True)
plt.grid(b=True)
plt.show()