欢迎来到天天文库
浏览记录
ID:40818237
大小:86.15 KB
页数:10页
时间:2019-08-08
《华科电信随机过程实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、随机过程实验报告院(系):电子信息与通信学院专业班级:姓名:学号:指导教师:一.实验任务(1)利用线性同余法产生平均分布的随机数。(2)利用平均分布的随机数,根据中心极限定理产生正态分布的随机数。(3)利用平均分布的随机数,根据反函数产生指数分布的随机数。(4)利用平均分布的随机数,产生泊松分布的随机数。(5)计算任意分布的随机过程的均值。(6)计算泊松过程的自相关序列。二.实验环境(1)平台:WindowsXP/7.0(2)编程环境:VC6.0(3)编程语言:C++三.实验代码//MyRand.cpp:implementationoftheCMyRandcla
2、ss.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"random.h"#include"MyRand.h"#include"math.h"#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif////////////////////////////////////////////////////////
3、////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////CMyRand::CMyRand(){}CMyRand::~CMyRand(){}voidCMyRand::MyRandInit(void){N=0x7FFFFFFF;//2^31-1K=16807;//7^5seed=2;}/*函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数,如果种子不变,则将可以重复调用产生一个伪随机序列利用CMy
4、Rand类中定义的全局变量:S,K,N,Y。其中K和N为算法参数,S用于保存种子数,Y为产生的随机数*/unsignedintCMyRand::MyRand(unsignedintseed){//添加伪随机数产生代码if(S==seed){Y=(Y*K)%N;}else{S=seed;Y=(seed*K)%N;}returnY;}/*函数功能,产生一个在min~max范围内精度为4位小数的平均分布的随机数*/doubleCMyRand::AverageRandom(doublemin,doublemax){doubledResult;dResult=0;dRes
5、ult=(double)MyRand(seed)/N;//产生0-1之间的均匀分布dResult=dResult*(max-min)+min;//将0-1之间的均匀分布扩展到min-max之间的均匀分布returndResult;}/*函数功能,在min到max范围内产生正态分布的随机数miu,最大概率密度处的随机变量,即产生的随机数中,概率最大的那个sigma*/doubleCMyRand::NormalRandom(doublemiu,doublesigma,doublemin,doublemax){doubledResult;dResult=0;//添加正
6、态分布随机变量产生代码for(inti=0;i<12;i++)dResult+=AverageRandom(min,max);//产生12个伪随机数,将它们加起来,dResult=(dResult-6)/(max-min);//再减去6,就能近似得到标准正态变量的样本值dResult=dResult*sigma+miu;returndResult;}/*函数功能,产生指数分布的随机数*/doubleCMyRand::ExpRandom(doublelambda,doublemin,doublemax){doubledResult=0.0;//添加指数分布随机变量
7、产生代码dResult=-1.0*log(AverageRandom(min,max))/lambda;returndResult;}/*函数功能,产生泊松分布的随机数*/unsignedintCMyRand::PoisonRandom(doublelambda,doublemin,doublemax){unsignedintdResult;//添加泊松分布随机变量产生代码doubleu=AverageRandom(min,max);inti=0;doublep=exp(-1*lambda);doubleF=p;while(u>=F){p=lambda*p/(i
8、+1);F+=p;i++
此文档下载收益归作者所有