华科 matlab 实验 黄弢,随机过程试验上机报告,华科.doc

这篇博客详细介绍了如何使用C++和MATLAB进行随机模拟,包括线性同余法生成伪随机数、均匀分布及正态分布随机数的实现。通过CMyRand类,作者演示了如何初始化和生成随机数,并应用到平均分布和正态分布的随机数生成中。此外,还提到了一些常用的网络和信号处理模拟工具如OPNETModeler和SPW。
摘要由CSDN通过智能技术生成

随机模拟与实验

上机实验报告

通信0809 潇洒哥

学号

一. 随机模拟的典型步骤:

1、根据问题构建模拟系统

2、仿真系统中各种分布的随机变量

3、运行模拟系统,进行统计测量

4、分析数据,输出结果

二.主要工具

基本工具:C、C++等编程模拟、matlab

网络模拟:OPNET Modeler、NS2:大型网络仿真

CASSAP:数字信号处理;SPW:电子系统

三.编译代码

// MyRand.cpp: implementation of the CMyRand class.

//

//

#include "stdafx.h"

#include "random.h"

#include "MyRand.h"

#include "math.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

//

// Construction/Destruction

//

CMyRand::CMyRand()

{

}

CMyRand::~CMyRand()

{

}

void CMyRand::MyRandInit(void)

{

N = 0x7FFFFFFF; //2^31-1

K = 16807; //7^5

seed = 2;

}

/*函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数,如果种子不变,

则将可以重复调用产生一个伪随机序列

实现思路:利用CMyRand类中定义的全局变量:S, K, N, Y。其中K和N为算法参数,S用于保存种子数,Y为产生的随机数,第一次调用检查将seed赋值与S获得Y的初值,之后调用选择rand()函数赋值与Y。

*/

unsigned int CMyRand::MyRand(unsigned int seed)

{

if(S != seed)

{

S = seed;

Y = (seed * K) % N;

}

else

{

Y = (Y * K) % N;

if(Y == 0)

Y = rand();

}

return Y;

}

/*函数功能,产生一个在min~max范围内精度为4位小数的平均分布的随机数

实现思路:min和max代表该均匀随机变量的取值范围,精确到小数点后4位。该参数在randomDlg.cpp中OnAverage ()和OnAverageStat()函数中已经设置,因此只需将该数小数点右移四位强制取整即可获得整数范围内的随机数,采用对(max-min)求余再加上min并将获得的结果缩小10000倍即可。

*/

double CMyRand::AverageRandom(double min,double max)

{

int minInteger = (int)(min*10000);

int maxInteger = (int)(max*10000);

int randInteger = MyRand(seed);

int diffInteger = maxInteger - minInteger;

int resultInteger = randInteger % diffInteger + minInteger;

return resultInteger/10000.0;

}

/*函数功能,在min 到max 范围内产生正态分布的随机数miu,最大概率密度处的随机变量,即产生的随机数中,概率最大的那个sigma

实现思路:设由AverageRandom函数获得0-1间隔均匀分布随机数U(0,1),i=1,2,…,n,且相互独立,由中心极限定理可知,当n较大时

*/

double CMyRand::NormalRandom(double miu, double sigma, double min, d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值