随机模拟实验.doc

上传人:M****1 文档编号:559711926 上传时间:2024-02-25 格式:DOC 页数:11 大小:168KB
返回 下载 相关 举报
随机模拟实验.doc_第1页
第1页 / 共11页
随机模拟实验.doc_第2页
第2页 / 共11页
随机模拟实验.doc_第3页
第3页 / 共11页
随机模拟实验.doc_第4页
第4页 / 共11页
随机模拟实验.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《随机模拟实验.doc》由会员分享,可在线阅读,更多相关《随机模拟实验.doc(11页珍藏版)》请在金锄头文库上搜索。

1、随机模拟实验一、 实验内容1、了解随机模拟的基本方法,掌握随机数的概念及其产生方法;2、掌握伪随机数的产生算法以及伪随机数发生器的特点;3、掌握一般随机数的产生方法;4、掌握平稳随机过程的数字特征的求解方法。二、实验步骤1、利用线性同余法产生在(min,max)上精度为4位小数的平均分布的随机数;2、编程实现在min 到max 范围内产生服从正态分布的随机数;3、编程产生服从指数分布的随机数;4、编程产生服从泊松分布的随机数;5、计算任意给定分布的随机过程的均值;6、计算泊松过程的自相关序列。三、实验代码与结果1、均匀分布/*函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数.如果种子

2、不变,则将可以重复调用产生一个伪随机序列。利用CMyRand类中定义的全局变量:S, K, N, Y。其中K和N为算法参数,S用于保存种子数,Y为产生的随机数*/unsigned int CMyRand:MyRand(unsigned int seed)/添加伪随机数产生代码if(S=seed)Y=K*Y%N;elseS=seed;Y=K*seed%N;return Y;/*函数功能,产生一个在minmax内精度为4位小数的平均分布的随机数*/double CMyRand:AverageRandom(double min,double max)double dResult;dResult =

3、0;/添加均匀分布随机变量产生代码dResult=(double)MyRand(seed)/N;dResult=dResult*(max-min)+min;/将01之间的均匀分布搬移到minmaxreturn dResult;P1.均匀分布随机序列P2.均匀统计2、正态分布/*函数功能,在min 到max 范围内产生正态分布的随机数miu,最大概率密度处的随机变量,即产生的随机数中,概率最大的那个sigma*/double CMyRand:NormalRandom(double miu, double sigma, double min, double max)double dResult;d

4、Result = 0;/添加正态分布随机变量产生代码int i,n;double sum=0.0;n=20;for(i=0;in;i+)sum+=AverageRandom(min,max);dResult=(sum-n*0.5)/sqrt(n/12);dResult=dResult*sigma+miu;return dResult;P3.正态分布P4.正态统计3、指数分布/*函数功能,产生指数分布的随机数*/double CMyRand:ExpRandom(double lambda, double min, double max)double dResult = 0.0;/添加指数分布随机

5、变量产生代码dResult=-1*log(AverageRandom(min,max)/lambda;return dResult;P5.指数分布P6.指数统计4、泊松分布/*函数功能,产生泊松分布的随机数*/unsigned int CMyRand:PoisonRandom(double lambda, double min, double max)unsigned int dResult = 0;/添加泊松分布随机变量产生代码int i=0;double p,F;p=exp(-lambda);F=p;while(1)if(AverageRandom(min,max)F)break;else

6、p=lambda*p/(lambda+1);F=F+p;i+;dResult=i;return dResult;P7.泊松分布P8.泊松统计5、均值/*函数功能,计算任意给定分布的随机过程的均值*/double CMyRand:Ex(void)double Ex = 0;/添加均值计算代码int i;double sum=0;for(i=0;i500;i+)sum+=AverageRandom(0,2);Ex=sum/i;return Ex;P9.服从02的均匀分布的均值6、自相关序列/*函数功能,计算随机过程的自相关序列*/double* CMyRand:Rx(double lambda,

7、int points)int m,I;double *Rx = (double*)malloc(2*points+1)*sizeof(double);/*添加自相关序列产生代码,产生的自相关序列存入Rx中,Rx可当作数组 使用,不要 在本函数中释放该数组!*/ I=5;int j=0;for(j=0,m=-1*points;m=points;j+,m+)*(Rx+j)=I*I*exp(-2*lambda*abs(m);return Rx;P10.泊松过程自相关序列四、实验结果分析1、均匀分布给定一个初始的随机数(种子值),调用该线性同余算法,即可按这个固定的公式计算出下一个“随机”数。随后,以

8、新产生出来的“随机”数作为种子,再计算出新的“随机”数。伪随机数本质上不是随机的。但只要计算公式选择得当,通过比较严格地统计检验,仍然可以产生出一系列近似于U(0,1)分布并且相对独立的随机数流。然后通过dResult=dResult*(max-min)+min;即可实现搬移,产生(min,max)上的均匀分布。图P1为一随机序列,图P2为其统计,可以看出此随机序列是是一个均匀序列。说明算法中取N=231-1,k=75 ,产生周期2109 的随机序列是满足要求的,可以用来产生其它的随机数。2、正态分布 设UiU(0,1),i=1,2,n,且相互独立,由中心极限定理可知,当n较大时然后通过X=(

9、Y-miu)/sigma可得Y=X*sigma+miu这样既可还原服从参数为(miu, sigma)的正态分布序列。依据中心极限定理可以看到,要求n较大,且Ui 相互独立,但是从伪随机数的产生方法知道伪随机数并不是随机的用matlab产生随机数Matlab() 随机数生成方法:第一种方法是用 random 语句,其一般形式为 y = random(分布的英文名,A1,A2,A3,m,n),表示生成 m 行 n 列的 m n 个参数为 ( A1 , A2 , A3 ) 的该分布的随机数。例如:(1) R = random(Normal,0,1,2,4): 生成期望为 0,标准差为 1 的(2 行

10、 4 列)2 4 个正态随机数(2) R = random(Poisson,1:6,1,6): 依次生成参数为 1 到 6 的(1 行 6 列)6 个 Poisson 随机数第二种方法是针对特殊的分布的语句:一 几何分布随机数 (下面的 P,m 都可以是矩阵) R = geornd(P) (生成参数为 P 的几何随机数) R = geornd(P,m) (生成参数为 P 的 m 个几何随机数) R = geornd(P,m,n) (生成参数为 P 的 m 行 n 列的 m n 个几何随机数) 例如(1) R = geornd(1./ 2.(1:6) ( 生成参数依次为 1/2,1/22,到 1

11、/26 的 6 个几何随机数)(2) R = geornd(0.01,1 5) (生成参数为 0.01 的(行列)5 个几何随机数).二Beta 分布随机数R = betarnd(A,B) (生成参数为 A,B 的 Beta 随机数)R = betarnd(A,B,m) (生成 m 个数为 A,B 的 Beta 随机数) R = betarnd(A,B,m,n) (生成 m 行 n 列的 m n 个数为 A,B 的 Beta 随机数).三正态随机数R = normrnd(MU,SIGMA) (生成均值为 MU,标准差为 SIGMA 的正态随机数)R = normrnd(MU,SIGMA,m)

12、(生成 1 m 个正态随机数)R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的 m n 个正态随机数) 例如(1) R = normrnd(0,1,1 5) 生成 5 个正态(0,1) 随机数 (2) R = normrnd(1 2 3;4 5 6,0.1,2,3) 生成期望依次为1,2,3;4,5,6, 方差为 0.1 的 2 3 个正态随机数四二项随机数:类似地有R = binornd(N,P)R = binornd(N,P,m) R = binornd(N,p,m,n) 例如 n = 10:10:60; r1 = binornd(n,1./n) 或 r2 =

13、binornd(n,1./n,1 6) (都生成参数分别为 1 1 ), L, ( 60, ) 的个二项随机数(10, 10 60五自由度为 V 的 2 随机数:R = chi2rnd(V) R = chi2rnd(V R = chi2rnd(V ,m) ,m,n)六期望为 MU 的指数随机数(即 Exp 随机数): 1 MUR = exprnd(MU)R = exprnd(MU,m)R = exprnd(MU,m,n)七自由度为 V1, V2 的 F 分布随机数: R = frnd(V1,V2) R = frnd(V1, V2,m)R = frnd(V1,V2,m,n)八 ( A, ) 随机数: R = gamrnd(A,lambda) R = gamrnd(A,la

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号