随机过程报告.docx
- 文档编号:16463250
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:11
- 大小:49.13KB
随机过程报告.docx
《随机过程报告.docx》由会员分享,可在线阅读,更多相关《随机过程报告.docx(11页珍藏版)》请在冰点文库上搜索。
随机过程报告
随机模拟与实验上机实验报告
一.随机模拟的典型步骤
1.根据问题构建模拟系统
2.仿真系统中各种分布的随机变量
3.运行模拟系统,进行统计测量
4.分析数据,输出结果
二.主要工具
基本工具:
C、C++等编程模拟、matlab
网络模拟:
OPENTModeler、NS2、大型网络仿真
CASSAP:
数字信号处理;SPW:
电子系统
三.编译代码
以下为主体部分代码,头文件的声明及各种基础源文件未给出
//MyRand.cpp:
implementationoftheCMyRandclass.
//
//////////////////////////////////////////////////////////////////////
#include"stdafx.h"
#include"random.h"
#include"MyRand.h"
#include"math.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyRand:
:
CMyRand()
{
}
CMyRand:
:
~CMyRand()
{
}
voidCMyRand:
:
MyRandInit(void)
{
N=0x7FFFFFFF;//2^31-1
K=16807;//7^5
seed=2;
}
/*函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数,如果种子不变,
则将可以重复调用产生一个伪随机序列
利用CMyRand类中定义的全局变量:
S,K,N,Y。
其中K和N为算法参数,S用于保存种子数,Y为产生的随机数
*/
unsignedintCMyRand:
:
MyRand(unsignedintseed)
{
//添加伪随机数产生代码
if(S!
=seed)
{
S=seed;
Y=(seed*K)%N;
}
else
{
Y=(Y*K)%N;
if(Y==0)
Y=rand();
}
returnY;
}
/*函数功能,产生一个在min~max范围内精度为4位小数的平均分布的随机数
*/
doubleCMyRand:
:
AverageRandom(doublemin,doublemax)
{
doubledResult;
dResult=0;
//添加均匀分布随机变量产生代码
dResult=MyRand(seed)%(((int)(max*10000)-(int)(min*10000))+1)+(int)(min*10000);
dResult=dResult/10000.0;
returndResult;
}
/*函数功能,在min到max范围内产生正态分布的随机数
miu,最大概率密度处的随机变量,即产生的随机数中,概率最大的那个
sigma
*/
doubleCMyRand:
:
NormalRandom(doublemiu,doublesigma,doublemin,doublemax)
{
doubledResult;
dResult=0;
//添加正态分布随机变量产生代码
for(inti=0;i<12;i++)
dResult+=AverageRandom(min,max);
dResult=(dResult-6)/(max-min);
dResult=dResult*sigma+miu;
returndResult;
}
/*函数功能,产生指数分布的随机数
*/
doubleCMyRand:
:
ExpRandom(doublelambda,doublemin,doublemax)
{
doubledResult=0.0;
//添加指数分布随机变量产生代码
while(dResult<0.01)
{
dResult=AverageRandom(min,max);
}
dResult=-1.0*log(dResult)/lambda;
returndResult;
}
/*函数功能,产生泊松分布的随机数
*/
unsignedintCMyRand:
:
PoisonRandom(doublelambda,doublemin,doublemax)
{
unsignedintdResult=0;
//添加泊松分布随机变量产生代码
doubleu=AverageRandom(min,max);
inti=0;
doublep=exp(-1*lambda);
doubleF=p;
while(u>=F)
{
p=lambda*p/(i+1);
F+=p;
i++;
}
dResult=i;
returndResult;
}
/*函数功能,计算任意分布的随机过程的均值
*/
doubleCMyRand:
:
Ex(void)
{
doubleEx=0;
//添加均值计算代码
for(inti=0;i<10000;i++)
Ex+=ExpRandom(2,0,1);
Ex=Ex/10000;
returnEx;
}
/*函数功能,计算随机过程的自相关序列
*/
double*CMyRand:
:
Rx(doublelambda,intpoints)
{
intm,I=5;
double*Rx=(double*)malloc((2*points+1)*sizeof(double));
//添加自相关序列产生代码
//产生的自相关序列存入Rx中,Rx可当作数组使用
//不要在本函数中释放该数组!
for(m=-points;m<=points;m++)
Rx[(m+points)]=I*I*exp(-2*lambda*abs(m));
returnRx;
}
四.程序截图
1.均匀分布
2.均匀统计
统计规律近似为一条直线,符合均匀分布的特征
3.正态分布
4.正太统计
统计规律近似为单峰状的曲线,符合正态分布特征。
5.指数分布
6.指数统计
统计规律近似为衰减的曲线,符合指数分布特征。
7.泊松分布
8.泊松统计
统计规律为衰减曲线,符合泊松分布特征。
注:
以上图形中,分布的图形里横坐标表示采样点个数,纵坐标表示采到的随机数的值;而统计图形里横坐标表示随机数的值,纵坐标表示该随机数值对应的概率密度。
9.均值(指数分布的均值)
上图中纵坐标表示均值,横坐标表示采到的随机数,得到的均值函数为0.5,与设定的lambda的倒数相等。
10.泊松分布自相关
五.实验心得
通过本次实验,我学会了线性同余法产生均匀随机数的方法,也懂得了指数、正太、泊松分布简单的C语言编程方法。
本次实验不仅加强了我对书本基础知识的理解,而且在实践部分也得到了很好的锻炼,使我对本课程的主要内容有了更深的理解,对于理论知识的学习也更加充分了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 随机 过程 报告