随机模拟实验参考

上传人:每**** 文档编号:66797064 上传时间:2022-03-29 格式:DOC 页数:11 大小:160KB
返回 下载 相关 举报
随机模拟实验参考_第1页
第1页 / 共11页
随机模拟实验参考_第2页
第2页 / 共11页
随机模拟实验参考_第3页
第3页 / 共11页
点击查看更多>>
资源描述
随机模拟实验一、 实验内容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为产生的随机数*/unsigned int CMyRand:MyRand(unsigned int seed)/添加伪随机数产生代码if(S=seed)Y=K*Y%N;elseS=seed;Y=K*seed%N;return Y;11 / 11/*函数功能,产生一个在minmax内精度为4位小数的平均分布的随机数*/double CMyRand:AverageRandom(double min,double max)double dResult;dResult = 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;dResult = 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;/添加指数分布随机变量产生代码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;elsep=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, 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、均匀分布给定一个初始的随机数(种子值),调用该线性同余算法,即可按这个固定的公式计算出下一个“随机”数。随后,以新产生出来的“随机”数作为种子,再计算出新的“随机”数。伪随机数本质上不是随机的。但只要计算公式选择得当,通过比较严格地统计检验,仍然可以产生出一系列近似于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=(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 行 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/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) (生成 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 = 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,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,1 10) 或 R = poissrnd(lambda(ones(1,10)十三Rayleigh 随机数: R = raylrnd(B) R = raylrnd(B,m)R = raylrnd(B,m,n)十四V 个自由度的 t 分布的随机数: R = trnd(V) R = trnd(V,m)R = trnd(V,m,n) 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,1 6) 都依次生成0,1 到0,6的个均匀随机数:十七Weibull 随机数R = weibrnd(A,B) R = weibrnd(A,B,m)R = weibrnd(A,B,m,n)文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!