随机过程报告.docx

上传人:b****6 文档编号:16463250 上传时间:2023-07-13 格式:DOCX 页数:11 大小:49.13KB
下载 相关 举报
随机过程报告.docx_第1页
第1页 / 共11页
随机过程报告.docx_第2页
第2页 / 共11页
随机过程报告.docx_第3页
第3页 / 共11页
随机过程报告.docx_第4页
第4页 / 共11页
随机过程报告.docx_第5页
第5页 / 共11页
随机过程报告.docx_第6页
第6页 / 共11页
随机过程报告.docx_第7页
第7页 / 共11页
随机过程报告.docx_第8页
第8页 / 共11页
随机过程报告.docx_第9页
第9页 / 共11页
随机过程报告.docx_第10页
第10页 / 共11页
随机过程报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

随机过程报告.docx

《随机过程报告.docx》由会员分享,可在线阅读,更多相关《随机过程报告.docx(11页珍藏版)》请在冰点文库上搜索。

随机过程报告.docx

随机过程报告

随机模拟与实验上机实验报告

 

 

一.随机模拟的典型步骤

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语言编程方法。

本次实验不仅加强了我对书本基础知识的理解,而且在实践部分也得到了很好的锻炼,使我对本课程的主要内容有了更深的理解,对于理论知识的学习也更加充分了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2