Python验证中心极限定理
程序员文章站
2022-07-10 23:36:06
...
果然Python等各种软件都是任务驱动型的,只要有任务有需求才会有动力去学,以下是本人借Pyhton验证中心极限定理的方法,分享出来共同学校,欢迎指正和交流~
至于结果的话,试试就知道了~
import numpy as np
import matplotlib.pyplot as plt
import math
import seaborn as sns # seaborn是以matplot为基库的升级版
pi=math.pi # 调用圆周率
e=math.e # 调用自然对数
def norm(x): # 定义标准正态分布函数,用于作图
y=e**(-x*x/2)/((2*pi)**0.5)
return y
x=np.arange(-4,4,0.1) # 自变量取值范围
y=norm(x) # y的赋值
plt.plot(x,y,color='b') # 绘制标准正态分布,为蓝色
# np.random.seed(60) # 可不要 保证每次抽取为同一个样本
pop_data=np.random.exponential(2,10000000)
# 以指数分布生成随机数,2为期望,生成100000个
means_size=[] # 建立空数组以存储数据
# 执行6000次,即总频数为6000
for _ in range(6000):
global n
n=2 # 抽取个数,修改这个参数即可改变抽取个数
sample=np.random.choice(pop_data,n) #从pop_data中随机抽取n个随机值
sample=sample.mean() #算抽取的n个随机值的均值
sample=n**0.5*(sample-2)/2 # 正态分布 标准化
means_size.append(sample) # 添加到数组
means_size=np.array(means_size) # 转化为一维数组
sns.set_style("darkgrid")
sns.distplot(means_size,color="r") # 画出样本的频率分布,红色为样本
plt.xlabel('Standardized Mean') # y轴和x轴
plt.ylabel('Frequency % Probability')
plt.title("n="+str(n))
plt.grid() # 画图
plt.savefig('中心极限定理 n='+str(n)+".png") # 保存要在展示之前
plt.show() # 展示