实验三随机过程的计算机模拟
实验目的
1、理解伪随机序列的产生原理,掌握产生伪随机序列的算法;
2、提高用计算机程序实现算法的能力;
3、进一步掌握Matlab的使用和程序设计方法;
4、增强独立设计能力。
实验原理
参见附图“4.4随机信号的计算机模拟”。
实验内容
1、用Matlab语言实现“乘同余法”,用“乘同余法”产生1000个(0,1)区间内均匀分布的随机数,并根据这1000个随机数的统计规律画出概率密度曲线;同时画出均匀分布的理论概率密度曲线,二者进行比较;
源代码:
A=ones(1,10000);
M=2^32-1;
A(1)=45165;
a=32719;
for i=1:1:10000
A(i+1)=mod((a*A(i)),M);
end
for i=1:1:10000
A(i)=A(i)/M;
end;
x=linspace(0+0.0125,1-0.0125,40);
yx=hist(A,x); %计算各个区间的个数
yy=(yx/10000)/(x(2)-x(1));
plot(x,yy) %画出概率密度分布图
●概率密度函数曲线
●理论概率密度曲线
●比较:
用“乘同余法”产生1000个(0,1)区间内均匀分布的随机数比较剧烈变化,改成了10000个之后依然不变。
2、用Matlab语言实现“混合同余法”,用“混合同余法”产生1000个(0,1)区间内均匀分布的随机数,并根据这1000个随机数的统计规律画出概率密度曲线;同时画出均匀分布的理论概率密度曲线,二者进行比较;
●源代码
(1)先建立M文件
function r=suijishu1(x0,n)
format long;
m=power(2,35);
a=power(5,15);
c=1;
r=zeros(n,1);
x=zeros(n+1,1);
x(1)=x0;
for i=2:n+1
y=a*x(i-1)+c;
x(i)=mod(y,m);
r(i-1)=x(i)/m;
end
format short;
(2)在窗口中输入以下程序:
>> r=suijishu1(1,1000)
●得出的随机数作图呈随机分布
●概率密度曲线
●比较
大部分和理想曲线一致,比乘同余法要好一些。
3、用“反函数法”产生1000个指数分布的随机数,并根据这1000个随机数的统计规律画出概率密度曲线;同时画出指数分布的理论概率密度曲线,二者进行比较;
●源代码
R=rand(1,1000);
lambda=0.5;
X=-log(1-R)/lambda;
subplot(2,1,1);
plot(X,'k');
xlabel('n');
ylabel('X(n)');
axis tight;
●随机数
●概率密度曲线
●理想概率密度曲线
f=0.5*exp(-0.5*(X));
plot(X,f);
4、用“反函数法”产生1000个瑞利分布的随机数,并根据这1000个随机数的统计规律画出概率密度曲线;同时画出瑞利分布的理论概率密度曲线,二者进行比较;
●源代码
R=rand(1,1000);
sigma=2
s=sigma^2
x=0:0.01:5
X=sigma*sqrt(-2*log(R));
plot(X,'k');
xlabel('n');
ylabel('X(n)');
axis tight;
●随机数分布
●概率密度曲线
●理想曲线
f= x/s.*exp(-x.^2/s)
plot(x,f)
5、用“变换法”产生1000个均值为0,方差为1的正态分布的随机数,并根据这1000个随机数的统计规律画出概率密度曲线;同时画出正态分布的理论概率密度曲线,二者进行比较。
●源代码
r1=rand(1,1000);
r2=rand(1,1000);
x=sqrt(-2.*log(r1)).*cos(2*pi*r2);
plot(x);
●随机数序列
●概率密度曲线
●理想正态分布曲线
《应用统计与随机过程》课程实验指导老师:杜青松
实验总结
这次的实验内容较多,但是通过分析和讨论,终于完成了所有的部分。
第11页。