变换抽样法产生正态分布随机数的程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档