随机模拟实验.docx
- 文档编号:15637965
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:15
- 大小:359.76KB
随机模拟实验.docx
《随机模拟实验.docx》由会员分享,可在线阅读,更多相关《随机模拟实验.docx(15页珍藏版)》请在冰点文库上搜索。
随机模拟实验
01机撲祕卖脸
一、实验内容
1、了解随机模拟的基本方法,掌握随机数的概念及其产生方法;
2、掌握伪随机数的产生算法以及伪随机数发生器的特点;
3、掌握一般随机数的产生方法;
4、掌握平稳随机过程的数字特征的求解方法。
二、实验步骤
1、利用线性同余法产生在(min,max)上精度为4位小数的平均分布的随机数;
2、编程实现在min到max范围内产生服从正态分布的随机数;
3、编程产生服从指数分布的随机数;
4、编程产生服从泊松分布的随机数;
5、计算任意给定分布的随机过程的均值;
6、计算泊松过程的自相关序列。
三、实验代码与结果
1、均匀分布
/*
函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数.如果种子不变,则将可以重复调用产生一个伪随机序列。
利用CMyRand类中定义的全局变量:
S,K,N,Y。
其中K和N为算法参数,S用于保存种子数,Y为产生的随机数
7
unsignedintCMyRand:
:
MyRand(unsignedintseed)
{
〃添加伪随机数产生代码
if(S==seed)
Y=K*Y%N;
else
{
S=seed;
Y=K*seed%N;
}
returnY;
严函数功能,产生一个在min-max内精度为4位小数的平均分布的随机数*/doubleCMyRand:
:
AverageRandom(doublemin,doublemax)
{
doubledResult;
dResult=0;//添加均匀分布随机变量产生代码dResult=(double)MyRand(seed)/N;
dResult=dResult*(max-min)+min;//将0T之间的均匀分布搬移到min~maxreturndResult;
}
!
三三三鯉型理!
!
■巴示波器|豐鹽鯉!
!
理!
!
理!
鯉鯉丄
P1•均匀分布随机序列
P2•均匀统计
2、正态分布
/*函数功能,在min到max范围内产生正态分布的随机数miu,最大概率密度处的随机变量,即产生的随机数中,概率最大的那个sigma*/
doubleCMyRand:
:
NormalRandom(doublemiu,doublesigma,doublemin,double
max)
{
doubledResult;
dResult=0;
〃添加正态分布随机变量产生代码
inti,n;
doublesum=0.0;
n=20;
for(i=0;ivn;i++)
sum+=AverageRandom(min,max);
dResult=(sum-n*0.5)/sqrt(n/12);
dResult=dResult*sigma+miu;
returndResult;
}
示波器-
$0.0100.0200.0300.0400.0=
P3•正态分布
严函数功能,产生指数分布的随机数*/
doubleCMyRand:
:
ExpRandom(doublelambda,doublemin,doublemax){
doubledResult=0.0;
〃添加指数分布随机变量产生代码
dResult=-l*log(AverageRandom(min,max))/lambda;
returndResult;
}
示波器1……
8
4
U
1
1
I
0
C
L
1
V
111
w
I
-4
-8
=0.0100.0200.0300.0400.0=
P5•指数分布
P6•指数统计
4、泊松分布
/*函数功能,产生泊松分布的随机数*/
unsignedintCMyRand:
:
PoisonRandom(doublelambda,doublemin,doublemax){
unsignedintdResult=0;
〃添加泊松分布随机变量产生代码
inti=0;
doublep,F;
p=exp(-lambda);
F=P;
while(l)
{
if(AverageRandom(mir\max)vF)
break;
else
{
p=lambda*p/(lambda+l);
F=F+p;
i++;
}
}
dResult=i;
returndResult;
P7•泊松分布
示波器
P&泊松统计
5、均值
/*函数功能,计算任意给定分布的随机过程的均值*/doubleCMyRand:
:
Ex(void)
{
doubleEx=0;
〃添加均值计算代码
inti;
doublesum=0;
for(i=0;i<500;i++)
sum+=AverageRandom(0,2);
Ex=sum/i;returnEx;
示波器1……
P9•服从0~2的均匀分布的均值
6、自相关序列
/*函数功能,计算随机过程的自相关序列*/
double*CMyRand:
:
Rx(doublelambda,intpoints)
{
intmJ;
double*Rx=(double*)malloc((2*points+l)*sizeof(double));
厂添加自相关序列产生代码,产生的自相关序列存入Rx中,Rx可当作数组使用,不要在本函数中释放该数组产/
1=5;
intj=O;
for(j=0/m=-l*points;m<=points;j++,m++)
*(Rx+j)=l*l*exp(-2*lambda*abs(m));
returnRx;
P1O・泊松过程自相关序列
1、均匀分布
给定一个初始的随机数(种子值),调用该线性同余算法,即可按这个固定的公式计算出下一个“随机”数。
随后,以新产生出來的“随机”数作为种子,再计算出新的“随机”数。
伪随机数本质上不是随机的。
但只要计算公式选择得当,通过比较严格地统计检验,仍然可以产生出一系列近似于U(O,1)分布并且相对独立的随机数流。
然后通过dResult=dResult*(max-min)+min;即可实现搬移,产生(min,max)上的均匀分布。
图P1为一随机序列,图P2为其统计,可以看出此随机序列是是一个均匀序列。
说明算法中取N=231-1,k=75,产生周期~2xl09的随机序列是满足要求的,可以用來产生其它的随机数。
2、正态分布
设Ui〜U(0,1),且相互独立,yHU.-nE(U)
由中心极限定理可知,当n较大时Z=囂)〜皿0,1)
然后通过X=(Y-miu)/sigma可得Y=X*sigma+miu"'
这样既可还原服从参数为(miu,sigma)的正态分布序列。
依据中心极限定理可以看到,要求n较大,且Ui相互独立,但是从伪随机数的产生方法知道伪随机数并不是随机的
用matlab产生随机数
Matlab(mathworks,com)随机数生成方法:
第一种方法是用random语句,其一般形式为
y=random(,分布的英文名
',Al,A2,A3,m,n),
表示生成m行n列的mXn个参数为(Al,A2,A3)的该分布的随机数。
例如:
(1)R=randomNormaV,0,1,2,4):
生成期望为0,标准差为1的(2行4列)2X4个正态随机数
(2)R=random('Poisson',1:
6,1,6):
依次生成参数为1到6的(1行6列)6个Poisson随机数
第二种方法是针对特殊的分布的语句:
一.儿何分布随机数
R二geornd(P)
R二geornd(P,m)
(下面的P,m都可以是矩阵)
(生成参数为P的几何随机数)
(生成参数为P的xm个儿何随机数)
1
R=geornd(P,m,n)(生成参数为P的m行n列的mXn个儿何随
机数)
例如
(1)R=geornd(l./2<(1:
6))(生成参数依次为1/2,1/22到1/2飞的6个几何随机数)
(2)R=geornd(0.01,[15])(生成参数为0.01的(1行5列)5个几何随机数).
二.Beta分布随机数
R=betarnd(A,B)(生成参数为A,B的Beta随机数)
R=betarnd(A,B,m)(生成Xm个数为A,B的Beta随机数)
1
R=betarnd(A,B,m,n)(生成m行n列的mXn个数为A,B的Beta随机数).
三.正态随机数
R=normrnd(MU,SIGMA)(生成均值为MU,标准差为SIGMA的正态随机数)
R=normrnd(MU,SIGMA,m,n)例如
(1)R=normrnd(0,1,[15])
R=normrnd(MU,SIGMA,m)(生成1Xm个正态随机数)
(生成m行n列的mXn个正态随机数)
生成5个正态(0,1)随机数
(2)R=normrnd([l23;456],0.1,2,3)生成期望依次为[1,2,3;4,5,6],方
差为0.1的2X3个正态随机数.
四.
二项随机数:
类似地有
R=
binornd(N,P)R=binornd(N,P,m)
R二binornd(N,p,m,n)
例如
n=10:
10:
60;rl=binornd(n,1./n)
或r2二binornd(n,1・/n,[1
61)
(都生成参数分别为
11),L,(60,)
的6个二项随机数.
(10,
1060
五.自由度为V的x2随机数:
R=chi2rnd(V)R=chi2rnd(VR=chi2rnd(V
m),m,n)
六.期望为MU的指数随机数(即
Exp随机数):
1
MU
R二exprnd(MU)R二exprnd(MU,m)R=exprnd(MU,m,n)
七・自由度为VI,V2的F分布随机数:
R二frnd(VbV2)R二frnd(Vl,V2,m)R二frnd(Vl,V2,m,n)
R二gamrnd(A,lambda)
八.r(A,x)随机数:
R=gamrnd(A,lambda,m)R=gamrnd
(A,lambda,m,n)
九・超几何分布随机数:
R=hygernd(N,K,M)R=hygernd(N,K,M,m)R=
hygernd(N,K,M,m,n)
十.对数正态分布随机数
R二lognrnd(MU,SIGMA)R二lognrnd(MU,SIGMA,m)R二
lognrnd(MU,SIGMA,m,n)
十一.负二项随机数:
R二nbinrnd(r,p)R二nbinrnd(r,p,m)R=nbinrnd(r,p,m,n)
十二.Poisson随机数:
R二poissrnd(lambda)R二poissrnd(lambda,m)R二poissrnd(lambda,m,n)
例如,以下3种表达有相同的含义:
lambda二2;R=poissrnd(lambda,1,10)
(或R二poissrnd(lambda,[110])或R二poissrnd(lambda(ones(1,10)))
十三.Rayleigh随机数:
R=raylrnd(B)
42
十五.离散的均匀随机数:
R二unidrnd(N)R二unidrnd(N,m)R二unidrnd(N,m,n)
十六.[A,B]上均匀随机数
R二unifrnd(A,B)R二unifrnd(A,B,m)R=unifrnd(A,B,m,n)例如unifrnd(0,1:
6)与unifrnd(0,1:
6,[16])都依次生成[0,1]到[0,6]的6个均匀随机数.:
十七•Weibull随机数
R二weibrnd(A,B)R二weibrnd(A,B,m)R=weibrnd(A,B,m,n)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 随机 模拟 实验