变换抽样法产生正态分布随机数的程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编制变换抽样法产生正态分布随机数的程序并进行验证分析;
设y1,y2是相互独立的均匀分布的随机变量,则新变量
x1=(−2log y1)12cos(2πy2)
x2=(−2log y1)12sin(2πy2)
也是相互独立的,而且服从正态分布。
程序及结果如下:
N=5000;%初始化数据长度
for i=1:N
y1=rand;%生成均匀分布的随机数
y2=rand;%生成均匀分布的随机数
x1(i)=sqrt((-2)*log(y1))*cos(2*pi*y2);%用变换抽样法产生正态分布随机数
x2(i)=sqrt((-2)*log(y1))*sin(2*pi*y2);%用变换抽样法产生正态分布随机数
end
u1=mean(x1);%计算出x1的平均值
v1=std(x1);%计算出x1的标准差
u2=mean(x1);%计算出x2的平均值
v2=std(x1);%计算出x2的标准差
subplot(1,2,1);
histfit(x1);%绘制带有正态密度曲线的直方图
hold on
xlabel('随机数');
ylabel('x1');
title('均值为u1,标准差为v1');
subplot(1,2,2);
histfit(x2);%绘制带有正态密度曲线的直方图
hold on
xlabel('随机数');
ylabel('x2');
title('均值为u2,标准差为v2');
>> u1
u1 =
0.0167 >> v1
v1 =
1.0020 >> u2
u2 =
0.0167 >> v2
v2 =
1.0020