发布网友 发布时间:2022-04-05 23:23
共3个回答
懂视网 时间:2022-04-06 03:44
python验证中心极限定理的方法:首先模拟随机掷色子1000次观察一下平均值;然后模拟抛十次,并画图看看他们的分布情况;最后模拟1000组,每组抛50次,并取每一组的平均值看分布情况。
python验证中心极限定理的方法:
中心极限定理:
从一个给定的服从任意分布的总体当中,每次抽n个样本,一共抽取m次。然后再对这m各组的值求平均值,各组的平均值会服从近似正态分布。
import numpy as np a = np.random.randint(1,7,1000)print(a)a.mean()
输出结果:
可以看到,掷1000次之后取平均值(注意:这个平均值每次策都有微小的不一样,因为是随机抽取的)接近于3.5(3.5=1/6*(1+2+3+4+5+6))。
然后,再次模拟抛10000次,取平均值
可以看到,结果越来越接近于3.5
sample = []for i in range(10): sample.append(a[int(np.random.random()*len(a))]) #从a里面随机抽plt.figure(figsize=(20,10),dpi=100)plt.bar(sample,range(len(sample)))plt.show()
可见分布不是非常的均匀。
sample_mean=[]sample_std=[]samples=[]for i in range(1000): sample=[] #每组一个列表 for j in range(60): sample.append(a[int(np.random.random()*len(a))])#模拟抛50次 sample = np.array(sample) #转化为array数组,便于处理 sample_mean.append(sample.mean()) sample_std.append(sample.std()) samples.append(sample)sample_mean_np = np.array(sample_mean)sample_std_np = np.array(sample_std)print(sample_mean_np)
plt.figure(figsize=(20,10),dpi=80)d =0.1 num_bins = (max(sample_mean_np)-min(sample_mean_np))//d plt.hist(sample_mean_np,num_bins) #绘制频率分布图
可以看到,每组的平均值是服从正态分布的。
相关免费学习推荐:python视频教程
热心网友 时间:2022-04-06 00:52
function b=bern(n,p)
x=rand(n,1);
% x is an n array ,choose from uniform distribution
b=zeros(1,n);
for i=1:n
b(i)=(x(i)<=p);
end
n=1000000;
p=0.3;
x=bern(n,p);
s=100;
yy=zeros(1,n/s);
for i=0:(n/s-1)
yy(i+1)=sum(x((i*s+1):((i+1)*s)))/s-p;
end
xx=-0.2:0.01:0.2;
hist(yy,xx)
把s改为10 n改为10000 p改为0.2,剩下那步就是做个标准正太分布,做不做都无所谓,我都已经center了
你这不能直接贴在matlab的那个command window就行了,首先要把function bern那个文件保存,然后才能运行后面的……
热心网友 时间:2022-04-06 02:10
1,变量随机=49+7