1、随机过程实验报告一. 实验目的通过随机过程的模拟实验,熟悉随机过程编码规律以及各种随机过程的实现方法,通过理论与实际相结合的方式,加深对随机过程的理解。 二实验原理及实现代码1.伪随机数的产生函数功能:采用线性同余法,根据输入的种子数产生一个伪随机数,如果种子不变,则将可以重复调用产生一个伪随机序列实现思路:利用 CMyRand 类中定义的全局变量:S, K, N, Y。其中 K 和 N 为算法参数, S 用于保存种子数,Y 为产生的随机数,第一次调用检查将 seed 赋值与 S 获得 Y 的初值,之后调用选择 rand()函数赋值与 Y。代码如下:unsigned int CMyRand:M
2、yRand(unsigned int seed)Y=seed;Y=K*seed%N;S=Y;return Y;2.均匀分布随机数的产生在上面实验中,已经产生了伪随机序列,所以为了得到0N 的均匀分布序列,只需将其转化为 min 到 max 的均匀分布即可,代码如下:double CMyRand:AverageRandom(double min,double max)double dResult;dResult = (double(MyRand(S)/N)*(max-min)+min;dResult=(int(dResult*10000)/10000.0 ; return dResult;3.正
3、态分布随机数的产生由 AverageRandom 函数获得 01 间隔均匀分布随机数U(0,1),i=1,2,n,且相互独立,由中心极限定理可知,当 n 较大时,1()(0,1)niiiiUEZND取n=12,近似有 ,也就是说,只要产生12个伪126(0,1)iiUN随机数u1,u2,u12,将它们加起来,再减去6,就能近似得到标准正态变量的样本值。代码如下:double CMyRand:NormalRandom(double miu, double sigma, double min, double max)double dResult;dResult = 0;for(int i=0;i=
4、F)F+=(lambda*F)/(dResult+1);dResult+;return dResult;5.计算任意分布的随机过程的均值根据大数定律,调用任意函数加和求平均即为该分布的均值。代码如下:double CMyRand:Ex(void)double Ex = 0;int i=0;for(i=0;i400;i+)switch(f)case 0:Ex+=AverageRandom(0,4);break;case 1:Ex+=NormalRandom(2, 0.4, 0, 1);break;case 2:Ex+=ExpRandom(1, 0, 1);break;case 3:Ex+=Poi
5、sonRandom(0.5, 0, 1);break;default: break;Ex/=400;return Ex;6.计算泊松过程的自相关序列由平稳随机过程数字特征求解的相关原理可得其中 分别为随机序列1(),01,2,NrXkrRxmN ,kx及其长度。double* CMyRand:Rx(double lambda, int points)int i,j;double *Rx = (double*)malloc(2*points+1)*sizeof(double);double *p=(double*)malloc(points*sizeof(double);for(i=0;ipoi
6、nts;i+)pi=PoisonRandom(lambda, 0, 1);for(i=0;ipoints;i+) Rxpoints+i=0;Rxpoints-i=0;for(j=0;jpoints-i;j+)Rxpoints+i+=pj*pj+i;/ Rxpoints-i=Rxpoints+i;Rxpoints+i/=points-i;Rxpoints-i=Rxpoints+i;Rx0=0;Rx2*points=0;return Rx;三 实验结果1.均匀分布均匀统计均匀分布均值:2.正态分布正态统计正态分布均值3.指数分布指数统计指数分布均值4.泊松分布泊松统计泊松分布均值5.泊松分布自相关函数( 为 0.2)4实验总结通过这次实验,加深了我对随机过程这门课程的理解与认识,对各种随机过程的模拟有了更深刻的了解,同时也认识到模拟编程的重要性。理论与实践相结合才能够更全面地理解和认识一门学科。