随机过程上机实验报告-华中科技大学--HUST

合集下载

华中科技大学-C语言程序设计_上机2019

华中科技大学-C语言程序设计_上机2019
• 课后习题 • 上机指导书
华中科技大学信息学院平台课—C语言程序设计
8
第五次上机
• 程序编写 ➢ 输入 n 个整数( n<10),排序后输出。排序的原则由函数 的一个参数决定,参数值为 1,按递减顺序排序,否则按递 增顺序排序。 ➢ 课后习题15
➢ 插入排序
• 课后习题 • 上机指导书
华中科技大学信息学院平台课—C语言程序设计
7
第四次上机
• 1. 已知五位数a2b3c能被23整除,编程求此五位数。 • 2. 编写函数GetMaxMin,求3个整形数据的最大值和最小值,
main函数完成输入3个整数值,调用所编函数计算最大值和最小 值,在main函数中输出最大和最小值。 • 3. 掌握程序调试方法,包括断点、单步、观察变量。(验证第四 章一(1-3))
➢ 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9
。取2位小数。
• 课后习题
➢ 五、程序3
➢ 表达式的值
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
6
第三次上机
• 程序编写 ➢ 第3章 二 4、6、8、12、14
• 课后习题ቤተ መጻሕፍቲ ባይዱ
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
华中科技大学信息学院平台课—C语言程序设计
3
上机要求
• 教学方式上机需要实验报告(上机前准备好
),给出测试内容(包括定义程序目标、设
计程序),写出代码
• 上机调试,记录出现问题,给出解释
• 用不同颜色笔修改上机报告中的程序
• 交上机报告
华中科技大学信息学院平台课—C语言程序设计
4
第一次上机

随机过程实验报告

随机过程实验报告

一、实验目的1. 理解随机过程的基本概念和性质。

2. 掌握随机过程的基本运算和性质。

3. 通过实验验证随机过程的性质和规律。

二、实验原理随机过程是指一系列随机变量按照一定规则排列而成的序列。

在现实生活中,随机过程广泛存在于自然界和人类社会,如股票价格、气象变化、生物进化等。

随机过程的研究有助于我们更好地理解和预测这些现象。

随机过程可以分为两类:离散随机过程和连续随机过程。

本实验主要研究离散随机过程。

三、实验设备与材料1. 计算机2. 随机过程模拟软件(如Matlab)3. 纸笔四、实验内容1. 随机过程的基本概念(1)随机变量的概念随机变量是指具有不确定性的变量,它可以取多个值。

在随机过程中,随机变量是基本的研究对象。

(2)随机过程的概念随机过程是由一系列随机变量按照一定规则排列而成的序列。

2. 随机过程的基本性质(1)无后效性无后效性是指随机过程的前后状态相互独立。

(2)无记忆性无记忆性是指随机过程的状态只与当前时刻有关,与过去时刻无关。

(3)马尔可夫性马尔可夫性是指随机过程的状态只与当前时刻有关,与过去时刻无关。

3. 随机过程的运算(1)随机过程的和设{Xn}和{Yn}是两个随机过程,则它们的和{Zn}定义为Zn = Xn + Yn。

(2)随机过程的差设{Xn}和{Yn}是两个随机过程,则它们的差{Zn}定义为Zn = Xn - Yn。

(3)随机过程的乘积设{Xn}和{Yn}是两个随机过程,则它们的乘积{Zn}定义为Zn = Xn Yn。

4. 随机过程的模拟利用随机过程模拟软件(如Matlab)模拟随机过程,观察其性质和规律。

五、实验步骤1. 初始化随机数生成器2. 定义随机过程(1)根据随机过程的基本性质,定义随机过程{Xn}。

(2)根据随机过程的运算,定义随机过程{Yn}。

3. 模拟随机过程(1)使用随机过程模拟软件(如Matlab)模拟随机过程{Xn}和{Yn}。

(2)观察模拟结果,分析随机过程的性质和规律。

计算方法上机实习报告5 - 华中科技大学

计算方法上机实习报告5 - 华中科技大学

计算方法上机实习报告 5一. 提出问题(1) 给出概率积分 的数据表:试用二次插值计算(0.472)f 。

(2)已知sin()y x =的函数表试构造出差商表,利用二次Newton 插值公式计算sin1.609(保留五位有效数字)。

(3) 求不高于4次的多项式()H x ,使它满足(1)2,'(1)4,H H =-=(2)'(2)0,(3)2,H H H ===并写出余项表达式。

(4) 用最小二乘法求一个形如2y a bx =+的经验公式,使与下列数据相拟合二. 分析问题(1)题目给出概率积分的四个插值节点,要求用二次插值计算,而我们知道二次插值只需要三个插值节点即可,在该题中我们尝试取前三个点作为插值节点。

该题的重点在求插值基函数11(),(),(),k k k l x l x l x -+而它们由公式()nj n j i jj ix x l x x x =≠-=-∏(1.1)给出。

而0()()nn i i i L x y l x ==∑给出插值公式。

(2)Newton 基本插值公式00100101()()(,)()(,,,)()()...().n n n N x f x f x x x x f x x x x x x x x x =+-++--- (1.2)它的各项系数就是函数的各阶差商,每增加一个插值节点,只需要在原来的基础上多计算一项,这一性质被称作承袭性。

(3)该题需要确定一个4次插值多项式()H x ,就是要获得其各项系数的解。

4次多项式()H x 有5个系数,而题目正好给予了5个条件,这样我们会获得关于系数的非奇异五元一次方程组,在运用第三章的选列主元消元法求出各系数。

(4)本题要求用最小二乘法求经验公式。

实际上也就是确定拟合曲线的各项系数,关于系数(0,1,...,)i a i m =的线性方程组如下: 三.解决问题(1)C 语言代码如下:#include"stdio.h" #include"iostream.h" #include"math.h" #define N 3void Get_l(int k,double x,double xk[N],double L[N]); void main() { int i;double l[N],L[N],x,Lx=0;double xk[N]={0.46,0.47,0.48};double f[N]={0.4846555,0.4937542,0.5027498}; printf("输入需插值节点x:\n"); scanf("%lf",&x); for(i=0;i<N;i++) { Get_l(i,x,xk,l); L[i]=l[i]*f[i]; Lx+=L[i]; }cout.precision(7);cout<<"f(x)="<<Lx<<endl; }/*获得基函数lk(x)*/void Get_l(int i,double x,double xk[N],double l[N]) { int k;double y1=1,y2=1; for(k=0;k<N;k++)if(k!=i){ y1*=(x-xk[k]);y2*=(xk[i]-xk[k]);}l[i]=y1/y2;}结果如下:(2)C语言代码如下:#include"stdio.h"#include"math.h"#define N 3#define M 4void Put_out(int i,double a[N][M]);double Get_value(double x,double a[N][M]);void main(){ int i,j;double a[N][M],sinx,x1;double x[N]={1.5,1.6,1.7};double f[N]={0.99749,0.99957,0.99166};for(i=0;i<N;i++){ a[i][0]=x[i];a[i][1]=f[i];}for(i=0;i<N;i++)Put_out(i,a);printf("k\tf(xk)\t\tf(x0,xk)\tf(x0,x1,xk)\tf(x0,x1,x2,xk)\n");for(i=0;i<N;i++){ printf("%d\t",i);for(j=0;j<i+2;j++){ printf("%lf\t",a[i][j]);}printf("\n");}printf("Putin x:\n");scanf("%lf",&x1);sinx=Get_value(x1,a);printf("sin(%lf)=%lf\n",x1,sinx);}/*输出差商表*/void Put_out(int i,double a[N][M]){ int j;for(j=2;j<M;j++){ if(j<i)a[i][j]=(a[i][j-1]-a[0][j-1])/(a[i][0]-a[j-1][0]);if(j<i+2)a[i][j]=(a[i][j-1]-a[j-2][j-1])/(a[i][0]-a[j-2][0]);elsea[i][j]=0;}}以上代码仅是主函数和输出差商部分,求值用的是选列主元消元法,前面有所涉及,在这里不再赘述。

随机过程上机实验报告讲解

随机过程上机实验报告讲解

2015-2016第一学期随机过程第二次上机实验报告实验目的:通过随机过程上机实验,熟悉Monte Carlo计算机随机模拟方法,熟悉Matlab的运行环境,了解随机模拟的原理,熟悉随机过程的编码规律即各种随机过程的实现方法,加深对随机过程的理解。

上机内容:(1 )模拟随机游走。

(2)模拟Brown运动的样本轨道。

(3)模拟Markov过程。

实验步骤:(1)给出随机游走的样本轨道模拟结果,并附带模拟程序。

①一维情形%—维简单随机游走% “从0开始,向前跳一步的概率为p,向后跳一步的概率为1-p”n=50;p=0.5;y=[0 cumsum(2.*(rand(1,n-1)v=p)-1)]; % n 步。

plot([0:n-1],y); %画出折线图如下。

w%一维随机步长的随机游动%选取任一零均值的分布为步长,比如,均匀分布。

n=50;x=rand(1,n)-1/2;y=[0 (cumsum(x)-l)];plot([0:n],y);②二维情形%在(u, v)坐标平面上画出点(u(k), v(k)), k=1:n,其中(u(k)) 和(v(k))是一维随机游动。

例%子程序是用四种不同颜色画了同一随机游动的四条轨道。

n=100000;colorstr=['b' 'r' 'g' 'y'];for k=1:4z=2.*(rand(2,n)<0.5)-1;x=[zeros(1,2); cumsum(z')];col=colorstr(k);plot(x(:,1),x(:,2),col);③%三维随机游走 ranwalk3dp=0.5;n=10000; colorstr=['b' 'r' 'g' 'y'];for k=1:4z=2.*(rand(3,n)v=p)-1; x=[zeros(1,3); cumsum(z')];col=colorstr(k);plot3(x(:,1),x(:,2),x(:,3),col);hold on end gridhold onendgrid4:04003?0-200-300-400-2OD20050、-100-200 -20D⑵给出一维,二维Brown运动和Poisson过程的模拟结果,并附带模拟程序,没有结果的也要把程序记录下来。

随机过程实验报告全

随机过程实验报告全

随机过程实验报告学院:专业:学号:姓名:一、实验目的通过随机过程的模拟实验,熟悉随机过程编码规律以及各种随机过程的实现方法,通过理论与实际相结合的方式,加深对随机过程的理解。

二、实验内容(1)熟悉Matlab工作环境,会计算Markov链的n步转移概率矩阵和Markov链的平稳分布。

(2)用Matlab产生服从各种常用分布的随机数,会调用matlab自带的一些常用分布的分布律或概率密度。

(3)模拟随机游走。

(4)模拟Brown运动的样本轨道的模拟。

(5)Markov过程的模拟。

三、实验原理及实验程序n步转移概率矩阵根据Matlab的矩阵运算原理编程,Pn = P ^n。

已知随机游动的转移概率矩阵为:P =0.5000 0.5000 00 0.5000 0.50000.5000 0 0.5000求三步转移概率矩阵p3及当初始分布为P{x0 = 1} = p{x0 = 2} = 0, P{x0 = 3} = 1 时经三步转移后处于状态3的概率。

代码及结果如下:P = [0.5 0.5 0; 0 0.5 0.5; 0.5 0 0.5] %一步转移概率矩阵P3 = P ^3 %三步转移概率矩阵P3_3 = P3(3,3) %三步转移后处于状态的概率1、两点分布x=0:1;y=binopdf(x,1,0.55);plot(x,y,'r*');title('两点分布');2、二项分布N=1000;p=0.3;k=0:N;pdf=binopdf(k,N,p);plot(k,pdf,'b*');title('二项分布');xlabel('k');ylabel('pdf');gridon;boxon3、泊松分布x=0:100;y=poisspdf(x,50);plot(x,y,'g.');title('泊松分布')4、几何分布x=0:100;y=geopdf(x,0.2);plot(x,y,'r*');title('几何分布');xlabel('x');ylabel('y');5、泊松过程仿真5.1 % simulate 10 timesclear;m=10; lamda=1; x=[];for i=1:ms=exprnd(lamda,'seed',1);x=[x,exprnd(lamda)];t1=cumsum(x);end[x',t1']5.2%输入:N=[];for t=0:0.1:(t1(m)+1)if t<t1(1)N=[N,0];elseif t<t1(2)N=[N,1];elseif t<t1(3)N=[N,2];elseif t<t1(4)N=[N,3];elseif t<t1(5)N=[N,4];elseif t<t1(6)N=[N,5];elseif t<t1(7)N=[N,6];elseif t<t1(8)N=[N,7];elseif t<t1(9)N=[N,8];elseif t<t1(10)N=[N,9];elseN=[N,10];endendplot(0:0.1:(t1(m)+1),N,'r-') 5.3% simulate 100 timesclear;m=100; lamda=1; x=[];for i=1:ms= rand('seed');x=[x,exprnd(lamda)];t1=cumsum(x);end[x',t1']N=[];for t=0:0.1:(t1(m)+1)if t<t1(1)N=[N,0];endfor i=1:(m-1)if t>=t1(i) & t<t1(i+1)N=[N,i];endendif t>t1(m)N=[N,m];endendplot(0:0.1:(t1(m)+1),N,'r-')6、泊松过程function I=possion(lambda,m,n)for j=1:mX=poissrnd(lambda,[1,n]); %参数为lambda的possion 过程N(1)=0;for i=2:nN(i)=N(i-1)+X(i-1);endt=1:n;plot(t,N)grid onhold onend7、布朗运动7.1一维布朗运动程序:function [t,w]=br1(t0,tf,h)t=t0:h:tf;t=t';x=randn(size(t));w(1)=0;for k=1:length(t)-1w(k+1)=w(k)+x(k);endw=sqrt(h)*w;w=w(:);end调用t0=1;tf=10;h=0.01;[t,w]=br1(t0,tf,h);figure;plot(t,w,'*');xlabel('t');ylabel('w');title('一维Brown运动模拟图'); 7.2二维布朗运动:function [x,y,m,n]=br2(x0,xf,y0,yf,h)x=x0:h:xf;y=y0:h:yf;a=randn(size(x));b=randn(size(y));m(1)=0;n(1)=0;for k=1:length(x)-1m(k+1)=m(k)+a(k);n(k+1)=n(k)+b(k);endm=sqrt(h)*m;n=sqrt(h)*n;end调用x0=0;xf=10;h=0.01;y0=0;yf=10;[x,y,m,n]=br2(x0,xf,y0,yf,h);figure;plot(m,n);xlabel('m');ylabel('n');title('二维Brown运动模拟图');7.3三维布朗运动:npoints =1000;dt = 1;bm = cumsum([zeros(1, 3); dt^0.5*randn(npoints-1, 3)]);figure(1);plot3(bm(:, 1), bm(:, 2), bm(:, 3), 'k');pcol = (bm-repmat(min(bm), npoints, 1))./ ...repmat(max(bm)-min(bm), npoints, 1);hold on;scatter3(bm(:, 1), bm(:, 2), bm(:, 3), ...10, pcol, 'filled');grid on;hold off;8、马尔科夫链离散服务系统中的缓冲动力学m=200;p=0.2;N=zeros(1,m); %初始化缓冲区A=geornd(1-p,1,m); %生成到达序列模型, for n=2:mN(n)=N(n-1)+A(n)-(N(n-1)+A(n)>=1);endstairs((0:m-1),N);9、随机数游走9.1 100步随机游走n = 100; %选取步数。

随机过程-实验报告

随机过程-实验报告
1 / 2 P 1/3 1/ 3 1/3 1/3 1/ 2 1/ 6 1/3 1/ 6
(1) 计算 2 步转移概率;(2) 已知初始分布为 P 2 / 5, 2 / 5,1 / 5 ,求 X 2 的分布律 (3) 求平稳分布,要求给出程序与结果。 程序:
程序: p=[0.2 0.8 0;0.8 0 0.2; 0.1 0.3 0.6]; P2=p^2 a=[p'-eye(3);ones(1,3)];b=[0 0 0 1]';T=a\b 结果:
0.1389
0.0611
解:由题意可知,该问题的转移概率矩阵 P 为:
8
0 .2 P 0 .8 0 .1
9
实验三
实验题目 实验目的 实验地点及时间 模拟 Possion 流 用 Matlab 语言产生随机数,了解 Possion 流 信息楼 127 机房 2012 年 6 月 4 日
4
实验内容 用 Matlab 语言产生随机数,并编程实现 possion 流的模拟 程序: U=rand(1,20); a=2; X=-a^(-1)*log(U); S=zeros(1,22); d=zeros(1,22); S(1)=0;S(2)=X(1); for n=3:21 S(n)=S(n-1)+X(n-1); end for i=0:21 %--if 0<=i<S(2) d(i+1)=0; else for j=2:21 if (S(j)<=i)&(S(j+1)<i) d(i+1)=j; end end end end plot(d)
实验内容 判定一个 Markov 链是否是遍历的,若是遍历的,求其极限分布。并能从实际问 题中抽象出 Markov 链,并求出其极限分布,并理解其实际意义。 实验习题 1、已知齐次马氏链 X n , n 0,1, 2, 的状态空间 E 1, 2, 3 ,状态转移矩阵为

华中科技大学博士研究生入学考试《随机过程》考试大纲

华中科技大学博士研究生入学考试《随机过程》考试大纲

华中科技大学博士研究生入学考试《随机过程》考试大纲一.概率论部分(30%):1. 随机事件和概率(1)随机事件和样本空间的概念,随机事件的关系和运算(2)事件的概率定义(包括古典型概率,几何型概率)及其计算(3)条件概率的定义,事件的独立性定义2.一维随机变量及其分布(1)随机变量定义,分布函数定义及性质(2)离散型随机变量①离散型随机变量的定义和分布列②几种典型的离散型随机变量:两点分布,二项分布,泊松分布,几何分布(3)连续型随机变量①连续型随机变量的定义②概率密度函数的性质③几种典型的连续型随机变量:均匀分布,指数分布,正态分布(4)随机变量函数的分布3.二维随机变量及其分布(1)二维随机变量的定义(2)边缘分布,条件分布,随机变量的独立性(3)二维随机变量函数的分布4.数字特征(1)随机变量的数学期望(2)随机变量的方差(3)协方差和相关系数(4)协方差矩阵二.随机过程部分(70%):1.随机过程的基本概念与基本类型(1)随机过程的基本概念(2)随机过程的分布律和数字特征①求解随机过程的一维、二维分布函数(或者概率密度函数)②数字特征:均值函数m x(t) ,方差函数D x(t),协方差函数C x(t1, t2) ,相关函数R x(t1, t2) ,特征函数g x(u) = E{ exp( j•u•x(t) ) }2.平稳随机过程(宽平稳)(1)平稳随机过程的定义,根据定义判断随机过程是否平稳(2)平稳随机过程的相关函数性质3.平稳随机过程的谱分析(宽平稳)(1)平稳过程的总能量,平均功率,平均功率谱密度(以下均简称:谱密度)三者的定义;以及这三者之间的关系(2)谱密度的性质①平稳过程的谱密度与相关函数是对应的傅里叶变换(3)平稳过程通过线性系统的分析输入X(t)是平稳过程,①均值函数:m y(t) = m x(t) *h(t) = 常数②相关函数: R y(t , t +τ) = R x(t , t +τ)* h(τ) * h(-τ)= R x(τ)* h(τ) * h(-τ)③综合①、②,输出Y(t)也是平稳过程④功率谱密度:S y(ω) = S x(ω) ·|H(jω)|24.马尔柯夫链(1)马尔柯夫链的定义(2)一步转移概率,一步转移概率矩阵P ;k步转移概率,k步转移概率矩阵P(k) ;及其关系:P(k) = P k(3)马尔柯夫链遍历性的判断和平稳分布的求解5.泊松过程(1)泊松过程的定义(2)泊松过程的基本性质P 406.正态过程(1)正态过程的定义(2)正态过程的基本性质①正态过程的一维分布是正态分布②正态过程的二维分布是二维正态分布,③根据均值函数m x(t) , 相关函数R x(t1, t2) 能确定有限维分布。

华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)

华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)

华中科技大学C语言实验与课程设计实验报告计算机科学与技术学院指导老师:目录1 表达式和标准输入输出实验 (3)2 流程控制实验 (11)3 函数程序与结构实验 (20)4 编译预处理实验 (28)5 数组实验 (35)6 指针实验 (42)7 结构与联合实验 (52)8 文件实验 (61)华中科技大学C语言实验与课程设计实验报告CS1408赵晓雁1 表达式和标准输入与输出实验1.1 实验目的(1) 熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。

(2)掌握scanf 和printf 函数的用法。

(3)掌握简单C程序(顺序结构程序)的编写方法。

1.2 实验内容及结果1.2.1.源程序改错下面给出了一个简单C语言程序例程,用来完成以下工作:(1)输入华氏温度f,将它转换成摄氏温度C后输出;(2)输入圆的半径值r,计算并输出圆的面积s;(3)输入短整数k、p,将k的高字节作为结果的低字节,p的高字节作为结果的高字节,拼成一个新的整数,然后输出;在这个例子程序中存在若干语法和逻辑错误。

要求参照2.1.3和2.1.4的步骤对下面程序进行调试修改,使之能够正确完成指定任务。

程序代码:#include<stdio.h>#define PI 3.14159;voidmain( void ){int f ;short p, k ;double c , r , s ;/* for task 1 */printf(“Input Fahrenheit:” ) ;scanf(“%d”, f ) ;c = 5/9*(f-32) ;printf( “ \n %d (F) = %.2f (C)\n\n ”, f, c ) ;/* for task 2 */printf("input the radius r:");scanf("%f", &r);s = PI * r * r;printf("\nThe acreage is %.2f\n\n",&s);/* for task 3 */printf("input hex int k, p :");scanf("%x %x", &k, &p );3处的语句,使之实现两数对调的操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

班级:通信1301班
姓名:郭世康
学号:U201313639
指导教师:卢正新
一、模块功能描述
CMYRand类是整个系统的核心,它产生各种随机数据供后面的类使用。可以产生伪随机序列、均匀分布、正态分布、泊松分布、指数分布等多种随机数据。
CRandomDlg类是数据的采集处理类。它可以将CMYRand产生的随机数据处理分析,再送入CScope等类进行模拟示波器显示。
CScope等类是有关示波器显示的类。
二、模块间的关系
CRandomDlg类在整个程序中是一个不可缺少的环节,它调用CMYRand中的函数来产生符合所需分布的随机序列,再将产生的结果统计分析,送到CScope类中的函数进行模拟示波器显示。CMYRand为整个程序的核心,就是这个类产生所需分布的随机序列。CAboutDlg是模拟示波器界面上的有关按钮选项的类。我们在示波器界面上点击一个按钮,它就会执行这个按钮所对应功能,比如点击正态分布,它就会调用CRandomDlg中的对应函数,在调用CMYRand中的产生正态分布的函数,再将结果送到CScope类中进行显示,最后我们可以在示波器上看到图形。
for(i=0;i<n;i++)
sum+=AverageRandom(min,max);//将均匀分布的随机数据进行求和,即大数定律的应用。
dResult=(sum-n*0.5)/sqrt(n/12);
dResult=dResult*sigma+miu;
//添加正态分布随机变量产生代码
return dResult;
*/
unsigned int CMyRand::MyRand(unsigned int seed)
{
//添加伪随机数产生代码
if(S==seed)
Y=K*Y%N;
else
{
S=seed;
Y=K*seed%N;
}
return Y;
}
输入参数为seed,即种子。输出参数为y,即一个随机序列,它的取值在0到N之间。
}
输出参数为任意随机分布的均值。
流程图:
7、
/*函数功能,计算随机过程的自相关序列
*/
double* CMyRand::Rx(double lambda, int points)
{
int m,I;
double *Rx = (double*)malloc((2*points+1)*sizeof(double));
{
double dResult = 0.0;
//添加指数分布随机变量产生代码
dResult=-1*log(AverageRandom(min,max))/lambda;
return dResult;
}
输入参数为指数分布的参数lambda和均匀分布随机序列的范围min、max,输出参数dResult为得到的指数分布随机序列。
p=exp(-lambda);
F=p;
while(1)
{
if(AverageRandom(min,max)<F)
break;
else
{
p=lambda*p/(lambda+1);
F=F+p;
i++;
}
}
dResult=i;
return dResult;
}
输入参数为lambda,即为泊松分布的参数,还有均匀分布随机序列的范围min、max。输出参数为dResult,即为服从泊松分布的随机数据样本。
流程图:
2、
/*函数功能,产生一个在min~max内精度为4位小数的平均分布的随机数*/
double CMyRand::AverageRandom(double min,double max)
{
double dResult;
dResult = 0;
dResult=(double)MyRand(seed)/N;//产生0~1之间的均匀分布
流程图:
5、/*函数功能,产生泊松分布的样本数据
*/
unsigned int CMyRand::PoisonRandom(double lambda, double min, double max)
{
unsigned int dResult = 0;
//添加泊松分布随机变量产生代码
int i=0;
double p,F;
}
输入参数miu,sigma,即为正态分布的均值和标准差,还有min和max,即为均匀分布随机数据的范围。输出参数为dResult,即为得到的正态分布随机变量。
流程图:
4、/*函数功能,产生指数分布的随机数,参数为lambda
*/
double CMyRand::ExpRandom(double lambda, double min, double max)
流程图:
6、/*函数功能,计算任意分布的随机过程的均值
*/
double CMyRand::Ex(void)
{
double Ex = 0;
//添加均值计算代码
int i;
double sum=0;
for(i=0;i<500;i++)
sum+=AverageRandom(0,2);
Ex=sum/i;
return Ex;
Miu为均值,sigma为标准差
*/
double CMyRand::NormalRandom(double miu, double sigma, double min, double max)
{
double dResult;
dResult = 0;
int i,n;Biblioteka double sum=0.0;
n=200;
三、数据结构
在本次随机试验中所填写的代码部分并没有用到有关于结构体等数据结构的东西。
四、功能函数
1、
/*
函数功能,采用线性同余法,根据输入的种子数产生一个伪随机数.
如果种子不变,则将可以重复调用产生一个伪随机序列。
利用CMyRand类中定义的全局变量:S, K, N, Y。
其中K和N为算法参数,S用于保存种子数,Y为产生的随机数
dResult=dResult*(max-min)+min;//将0~1之间的均匀分布通过乘以倍数放大到到min~max
return dResult;
}
输入参数为min,max,即均匀分布的范围。输出参数为dResult,即为随机序列。
流程图:
3、
/*函数功能,根据大数定律,在min到max范围内产生正态分布的随机数
//添加自相关序列产生代码
//产生的自相关序列存入Rx中,Rx可当作数组使用
//不要在本函数中释放该数组!
相关文档
最新文档