文档库 最新最全的文档下载
当前位置:文档库 › 浅谈高斯分布随机数产生1

浅谈高斯分布随机数产生1

MAAB产生各种分布的随机数

MATLAB产生各种分布的随机数 1,均匀分布U(a,b): 产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1分布U(0,1) 产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn) 即产生mm*nn均值为N*P的矩阵 binornd(N,p)则产生一个。而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。5,产生m*n阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵: exprnd( ,mm, nn) 此外,常用逆累积分布函数表?

函数名调用格式函数注释? norminvX=norminv(P,mu,sigma)正态逆累积分布函数? expinvX=expinv(P,mu)指数逆累积分布函数? weibinvX=weibinv(P,A,B)威布尔逆累积分布函数? logninvX=logninv(P,mu,sigma)对数正态逆累积分布函数? Chi2invX=chi2inv(P,A,B)卡方逆累积分布函数? BetainvX=betainv(P,A,B)β分布逆累积分布函数 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P的二项随机数据 函数 binornd 格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。 R = binornd(N,P,m) %m指定随机数的个数,与R同维数。 R = binornd(N,P,m,n) %m,n分别表示R的行数和列数 例4-1

正态分布随机数生成算法

概率论与数理统计课程设计 题目:正态分布随机数生成算法 要编程得到服从均匀分布的伪随机数是容易的。C语言、Java语言等都提供了相应的函

数。但是要想生成服从正态分布的随机数就没那么容易了。 得到服从正态分布的随机数的基本思想是先得到服从均匀分布的随机数,再将服从均匀分布的随机数转变为服从正态分布。接下来就先分析三个从均匀分布到正态分布转变的方法。然后编程实现其中的两个方法并对程序实现运作的效果进行统计分析。 1、 方法分析 (1) 利用分布函数的反函数 若要得到分布函数为F(x)的随机变量Y 。 可令1()Y F u -=, 其中u 是服从均匀分布的随机变量,有 1 ()(())() P Y y P U F y F y -≤=≤= 因而,对于任意的分布函数,只要求出它的反函数,就可以由服从均匀分布的随机变量实例来生成服从该分布函数的随机变量实例。 现在来看正态分布的分布函数,对于2 ~(,)X N μσ,其分布函数为: 2 2()21 ()t x F x e μσ ---∞ = ? 显然,要想求其反函数是相当困难的,同时要想编程实现也很复杂。可见,用此种方法来生成服从正态分布的随机变量实例并不可取。 (2) 利用中心极限定理 第二种方法利用林德伯格—莱维(Lindeberg —Levi)中心极限定理:如果随机变量序列 12,,,,n X X X 独立同分布,并且具有有限的数学期望和方差 ()()2 ,0(1,2,),i i E X D X i μσ ==>= 则对一切x R ∈有 2 2 1lim t n x i n i P X n x dt μ- -∞ →∞ =? ?? -≤= ????? ∑? 因此,对于服从均匀分布的随机变量i X ,只要n 充分大, 11 n i i X n μ=? -? ?∑就服从()0,1N 。我们将实现这一方法。 (3) 使用Box Muller 方法 先证明2 2 2x e dx π-∞-∞ =? : 令2 2 x I e dx -∞-∞ = ? ,则

各种分布的随机数生成算法

各型分布随机数的产生算法 随机序列主要用概率密度函数(PDF〃Probability Density Function)来描述。 一、均匀分布U(a,b) ?1x∈[a,b]? PDF为f(x)=?b?a?0〃其他? 生成算法:x=a+(b?a)u〃式中u为[0,1]区间均匀分布的随机数(下同)。 二、指数分布e(β) x?1?exp(?x∈[0,∞)βPDF为f(x)=?β ?0〃其他? 生成算法:x=?βln(1?u)或x=?βln(u)。由于(1?u)与u同为[0,1]均匀分布〃所以可用u 替换(1?u)。下面凡涉及到(1?u)的地方均可用u替换。 三、瑞利分布R(μ) ?xx2 exp[?x≥0?回波振幅的PDF为f(x)=?μ2 2μ2 ?0〃其他? 生成算法:x=?2μ2ln(1?u)。 四、韦布尔分布Weibull(α,β) xα??αα?1?αβxexp[?(]x∈(0,∞)βPDF为f(x)=? ?0〃其他? 生成算法:x=β[?ln(1?u)]1/α 五、高斯(正态)分布N(μ,σ2) ?1(x?μ)2 exp[?]x∈?2PDF为f(x)=?2πσ 2σ ?0〃其他? 生成算法: 1?y=?2lnu1sin(2πu2)生成标准正态分布N(0,1)〃式中u1和u2是相互独立的[0,1]区间

均匀分布的随机序列。 2?x=μ+σy产生N(μ,σ2)分布随机序列。 六、对数正态分布Ln(μ,σ2) ?1(lnx?μ)2 exp[?x>0PDF为f(x)=?2πσx 2σ2 ?0〃其他? 生成算法: 1?产生高斯随机序列y=N(μ,σ2)。 2?由于y=g(x)=lnx〃所以x=g?1(y)=exp(y)。 七、斯威林(Swerling)分布 7.1 SwerlingⅠ、Ⅱ型 7.1.1 截面积起伏 σ?1?exp[σ≥0?σ0截面积的PDF为f(σ)=?σ0〃【指数分布e(σ0)】 ?0〃其他? 生成算法:σ=?σ0ln(1?u)。 7.1.2 回波振幅起伏 ?AA2 ?exp[?2]A≥0〃式中A2=σ〃2A02=σ0。回波振幅的PDF为f(A)=?A02【瑞利分布R(A0)】2A0?0〃其他? 生成算法:A=?2A02ln(1?u)=σ0ln(1?u)。也可由A2=σ得A==?0ln(1?u) 7.2 SwerlingⅢ、Ⅳ型 7.2.1 截面积起伏 2σ?4σ]σ≥0?2exp[?σσ截面积的PDF为f(σ)=?0〃 0?0〃其他? 生成算法:σ=?式中u1和u2是相互独立的[0,1]区间均匀分布随机序列。 [ln(1?u1)+ln(1?u2)]〃2

随机数的产生和特性曲线

《概率论与随机信号分析》实验报告 实验名称:随机数的产生和特性曲线指导教师: 张正明 成绩: 姓名:陈新班级:10通信A班学号:67 一、实验目的与任务 1.了解随机数的产生方法; 2.了解常用随机数的概率分布函数、分布律和概率密度函数。 二、实验原理 随机数的产生有好多方法,可以利用乘积法和同余法产生【0,1】之间的均匀分布,然后利用函数变换法产生所需不同分布的随机数。可以按照所产生的随机数,对落在不同区间的数据进行统计,从而画出所产生的随机数的统计特性。所有这些工作我们可以自己动手用matlab,VC 或VB等语言进行编程实现。 在现代系统仿真中,大量地使用matlab工具,而且它也提供了非常丰富的函数来产生经常使用的分布的随机数,比如rand,randn就是用来产生均匀分布随机数和高斯分布随机数的。 本实验充分利用matlab提供的工具来产生随机数,验证和观察其统计特性。 1.disttool:分布函数和密度函数的可视化工具 分布函数和密度函数的工具能够产生22种常用分布的概率分布曲线和概率密度曲线,并通过图形方式显示。我们还可以通过修改参数产生同一种分布不同参数的概率分布曲线和概率密度曲线。 2.randtool:随机变量模拟工具 随机变量模拟工具能够模拟产生22种常用分布的随机数,并可以通过修改它们的参数产生同一种分布不同参数的随机数,并通过图形方式显示它们的概率密度统计。 三、实验内容与结果 1.绘制正态分布密度函数曲线 建立normal.m脚本文件,并运行 x=-10:0.1:10; u=0,c2=4; c1=sqrt(c2); f=1/(sqrt(2*pi)*d)*exp(-(x-u)^2/2/c2);正态概率密度

正态分布随机数

数学模型: 设连续型随机变量X 的高斯分布的概率密度为 ( )22 ()2,x f x μσ-= -∞<x <+∞ (3-1) 其中μ,σ(σ>0)为常数,则称X 服从参数为μ,σ的正态分布或高斯(Gauss)分布,记为X ~N (μ,2σ)。均值和方差的计算见公式3-2和公式3-3所示,可得到正态分布随机变量X 的均值E(X)=μ和方差D(X)=2σ。 ()()E X xf x dx +∞ -∞ =? (3-2) 2()()D X x f x dx +∞ -∞ =? (3-3) ()()E X xf x dx +∞ -∞ =? 22 ()2x dx μσ-- +∞ -∞ =? 令 x t μ σ -=,则 2 2()()t E X t dt σμσ+∞ --∞ =+?? 2 2 22t t dt dt σ μ+∞ +∞---∞ -∞ =+?? ? 0μμ=+= 根据方差的定义可知: 2 (){[()]} D X E X E X =- 所以,2 (){[()]}D X E X E X =- 2()22()x x dt μσμ-- +∞ -∞ = -? 2222 t t dt σσ+∞ --∞ =?? 2 22 2t t dt σ+∞ --∞ =?

2 σ= 即知正态分布的两个参数分别是该分布的数学期望和方差。 中心极限定理: 设随机变量12,,,n X X X ???相互独立,服从同一分布,且具有相同的均值和方差:()k E X μ=,2()0(1,2,,)k D X k n σ=≠=???,则随机变量 () n n n k k k n X E X X n Y μ --= = ∑∑∑ (3-4) 的分布函数()n F x 对于任意x 都满足 2 2 lim ()lim }n t k x n n n X n F x P x dt μ →∞ →∞ -=≤=∑? (3-5) 即当n 趋向于无穷大时,随机变量n Y 近似的服从标准正态分布N(0,l)。在实际应用中当。大于等于30时,可以把1n i i Y X ==∑当作服从均值为n μ,方差为n 2σ的 正态分布,那么变量'Y = 近似服从标准正态分布N ~(0,l)。 Box-Muller 变换法: 变换法是通过一个变换将一个分布的随机数变换成一个不同分布的随机数。高斯分布的密度函数见公式3-1所示,通过Box-Muller 变换,它可以产生精确的正态分布的随机变量。其变换式如下 : 1)y v π (3-6) 2)y v π (3-7) 式中u ,v 是在区间[0,1]上服从均匀分布,且相互独立的随机变量,所以得到的随机变量1y ,2y 也应该是相互独立的,且服从N ~(0,1)的标准正态分布。 Box-Muller 变换的推导过程如下: 由公式3-6和公式3-7可得: 221212 2 1 ,()2y y y u e v arctg y π+- == (3-8)

MATLAB产生各种分布的随机数

M A T L A B产生各种分布 的随机数 The final revision was on November 23, 2020

MATLAB产生各种分布的随机数 1,均匀分布U(a,b): 产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1分布U(0,1) 产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn) 即产生mm*nn均值为N*P的矩阵 binornd(N,p)则产生一个。而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。 5,产生m*n阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵: exprnd( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 norminv X=norminv(P,mu,sigma) 正态逆累积分布函数 expinv X=expinv(P,mu) 指数逆累积分布函数 weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数 logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数

Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数 Betainv X=betainv(P,A,B) β分布逆累积分布函数 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P的二项随机数据 函数 binornd 格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。 R = binornd(N,P,m) %m指定随机数的个数,与R同维数。 R = binornd(N,P,m,n) %m,n分别表示R的行数和列数 例4-1 >> R=binornd(10, R = 3 >> R=binornd(10,,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n) r1 = 2 1 0 1 1 2 >>r2 = binornd(n,1./n,[1 6]) r2 = 0 1 2 1 3 1 4.1.2 正态分布的随机数据的产生

正态分布随机数的产生

四院四队 正态分布随机数的产生 实验报告 2014年5月26日

正态分布随机数的产生 一、 实验简述 通过matlab 实现正态分布N(0,1)随机数的产生。 二、 历史背景 正态分布是最重要的一种概率分布。正态分布概念是由德国的数学家和天文学家Moivre 于1733年首次提出的,但由于德国数学家Gauss 率先将其应用于天文学家研究,故正态分布又叫高斯分布,高斯这项工作对后世的影响极大,他使正态分布同时有了“高斯分布”的名称,后世之所以多将最小二乘法的发明权归之于他,也是出于这一工作。高斯是一个伟大的数学家,重要的贡献不胜枚举。但现今德国10马克的印有高斯头像的钞票,其上还印有正态分布的密度曲线。这传达了一种想法:在高斯的一切科学贡献中,其对人类文明影响最大者,就是这一项。在高斯刚作出这个发现之初,也许人们还只能从其理论的简化上来评价其优越性,其全部影响还不能充分看出来。这要到20世纪正态小样本理论充分发展起来以后。拉普拉斯很快得知高斯的工作,并马上将其与他发现的中心极限定理联系起来,为此,他在即将发表的一篇文章(发表于1810年)上加上了一点补充,指出如若误差可看成许多量的叠加,根据他的中心极限定理,误差理应有高斯分布。这是历史上第一次提到所谓“元误差学说”——误差是由大量的、由种种原因产生的元误差叠加而成。后来到1837年,海根(G.Hagen )在一篇论文中正式提出了这个学说。 其实,他提出的形式有相当大的局限性:海根把误差设想成个数很多的、独立同分布的“元误差” 之和,每只取两值,其概率都是1/2,由此出发,按狄莫佛的中心极限定理,立即就得出误差(近似地)服从正态分布。拉普拉斯所指出的这一点有重大的意义,在于他给误差的正态理论一个更自然合理、更令人信服的解释。因为,高斯的说法有一点循环论证的气味:由于算术平均是优良的,推出误差必须服从正态分布;反过来,由后一结论又推出算术平均及最小二乘估计的优良性,故必须认定这二者之一(算术平均的优良性,误差的正态性) 为出发点。但算术平均到底并没有自行成立的理由,以它作为理论中一个预设的出发点,终觉有其不足之处。拉普拉斯的理论把这断裂的一环连接起来,使之成为一个和谐的整体,实有着极重大的意义。 三、 实验步骤 设U 1,U 2相互独立同服从U(0,1),令 1 2 112(2lnU )cos(2U )X π=-

真随机数产生方法

ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学 ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学 引言 随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。常见的随机数发生器有两种:使用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。要获取真正随机的真随机数,常使用硬件随机数发生器的方法来获取。这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等),每次获取的真随机数都是不可测的,具有很好的随机性。 真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发生源,具有广泛的应用价值。但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。本文利用RC充放电的低稳定度,根据AVR单片机的特点设计了一种性价比极高的真随机数发生器。该随机数发生器使用元件很少,稳定性高,对一些价格敏感的特殊场合,如金融、通信、娱乐设备等有较大的应用意义。 1 基本原理和方法 1.1 基本原理 串联的RC充放电电路由于受到漏电流、电阻热噪声、电阻过剩噪声、电容极化噪声等诸多不确定性因素的影响,其充放电稳定度一般只能达到10-3。利用这种RC充放电的低稳定度特性实现廉价的真随机数发生源。 Atmel公司AVR单片机ATmega 128以其速度快、功能强、性价比高等优点广泛应用于各种嵌入式计算场合。利用AVR单片机引脚配置灵活多样的特点,使用Amnega128 两个I/O口作为真随机数的电气接口。 其原理如图1所示。主要原理是利用串联RC电路的不确定性产生真随机数源,收集数据,通过AVR单片机ATmega128和主时钟电路量化RC电路的充放电时问,获得不确定的2位二进制数据,再利用程序将每4次采集的数据综合,最后产生1个8位的真随机数。

一维正态分布随机数序列的产生方法

一维正态分布随机数序列的产生方法 一、文献综述 1.随机数的定义及产生方法 1).随机数的定义及性质 在连续型随机变量的分布中,最简单而且最基本的分布是单位均匀分布。由该分布抽取的简单子样称,随机数序列,其中每一个体称为随机数。 单位均匀分布也称为[0,1]上的均匀分布。 由于随机数在蒙特卡罗方法中占有极其重要的位置,我们用专门的符号ξ表示。由随机数序列的定义可知,ξ1,ξ2,…是相互独立且具有相同单位均匀分布的随机数序列。也就是说,独立性、均匀性是随机数必备的两个特点。 随机数具有非常重要的性质:对于任意自然数s,由s个随机数组成的 s维空间上的点(ξn+1,ξn+2,…ξn+s)在s维空间的单位立方体Gs上 均匀分布,即对任意的ai,如下等式成立: 其中P(·)表示事件·发生的概率。反之,如果随机变量序列ξ1, ξ2…对于任意自然数s,由s个元素所组成的s维空间上的点(ξn+1,…ξn+s)在Gs上均匀分布,则它们是随机数序列。 由于随机数在蒙特卡罗方法中所处的特殊地位,它们虽然也属于由具有已知分布的总体中产生简单子样的问题,但就产生方法而言,却有着本质上的差别。 2).随机数表 为了产生随机数,可以使用随机数表。随机数表是由0,1,…,9十个数字组成,每个数字以0.1的等概率出现,数字之间相互独立。这些数字序列叫作随机数字序列。如果要得到n位有效数字的随机数,只需将表中每n 个相邻的随机数字合并在一起,且在最高位的前边加上小数点即可。例如,某随机数表的第一行数字为7634258910…,要想得到三位有效数字的随机数依次为0.763,0.425,0.891。因为随机数表需在计算机中占有很大内存, 而且也难以满足蒙特卡罗方法对随机数需要量非常大的要求,因此,该方法不适于在计算机上使用。 3).物理方法

编写一个产生符合高斯分布的随机数函数

编写一个产生符合高斯分布的随机数函数信号检测与估计课程作业作业要求 1、利用计算机内部函数产生高斯分布的随机数,分别画出500,10000,100000点的波形,并进行统计分析(分别画出概率密度曲线,计算均值与方差) 2、利用计算机自己编写一个产生符合高斯分布的随机数函数,画出100000点的波形,并进行统计分析(同一) 提示:这一问分两步做,第一步先产生一个均匀分布的随机数序列(乘同余法、混合同余法等,可以用自己的方法),第二步通过适当变换得到符合高斯分布概率模型的随机数列 3、对随机数产生函数和高斯分布进行性能分析,并写出自己对于此次作业和上课的学习体会 一、利用内部函数产生高斯分布 首先利用matlab自带的内部函数randn()就可以方便的生成所需要的高斯分布随机数,然后画出概率密度曲线并计算出均值与方差即可。程序代码如下: A=randn(500,1); B=randn(10000,1);

C=randn(100000,1); subplot(2,3,1); bar(A); subplot(2,3,2); bar(B); subplot(2,3,3); bar(C); [f1,x1]=ksdensity(A); subplot(2,3,4); plot(x1,f1); title('500点高斯分布概率密度函数'); [f2,x2]=ksdensity(B); subplot(2,3,5); plot(x2,f2); title('10000点高斯分布概率密度函数'); [f3,x3]=ksdensity(C); subplot(2,3,6); plot(x3,f3); title('100000点高斯分布概率密度函数'); JZ500=mean(A) JZ1000=mean(B) JZ100000=mean(C) FC500=var(A) FC10000=var(B)

随机数产生方法

伪随机数的产生,现在用得较多的是“线性同余法" 就是下面这个式子 R(n+1) = [R(n) * a + b] mod c 为使随机数分布尽量均匀,a、b 均为质数, c 一般取值域内的最大值(mod 是求余数) 从这个式了可以看出,每次产生的随机数都跟上一次产生的数有关系,那么,第一个数是怎么来的呢?这就是线性同余法中必须用的的”种子",也就是说,给定某个种子后,所产生的随机数序列是固定的,在计算机编程中,一般使用系统时间来初始化种子,就是前面代码中的 srand((unsigned)time(NULL)); 这一句了。因为每次运行程序的时间肯定不一样,所以产生散列肯定也不一样,从而达到“随机”的目的。 a,b,c 的取值我用的是 a=3373, b=1, c=32768 下面的两个子程序是我在我的项目(S7-200 226)中产生随机的系统编号用的,因为我的编号中只有4位数采用了随机数,所以下面的程序中用的是整型,最大范围为32767。如果需要更宽范围的随机数,可以采用双字类型,并适当修改程序,代码很简单,就是将上面那个表达式用 S7-200 的指令表示出来就行了。 这两个子程序是从 MicroWIN V4.0 中导出来的,可以将它们用文本编辑器保存为 AW L 文件后直接导入 MicroWIN。 使用时在第一个扫描周期调用 Srand 初始种子,需要随机数的地方调用 Random Random 有了个最大范围参数,可以限制生成的随机数的最大范围,比如我只需要4位随机数,所以一般这样调用 CALL Random, 10000, vw0,生成的数就在 0-9999 范围内 下面是代码: SUBROUTINE_BLOCK Srand:SBR17 TITLE=初始化随机数种子 // // 直接使用系统时钟的分秒来作为种子 VAR_OUTPUT seed:WORD; END_VAR

随机数产生原理及实现

电子信息与通信工程学院 实验报告 实验名称随机数的产生 课程名称随机信号分析 姓名顾康学号U201413323 日期6月6日地点南一楼东204 成绩教师董燕

以上为6种分布的实验结果 1.均匀分布 随机变量X~U(0,1)的一组样本值的模拟值一般采用某种数值计算方法产生随机数序列,在计算机上运算来得到,通常是利用递推公式: Xn=f(Xn-1,.....,Xn-k) 1.1 同余法 Xn+1 = λXn(mod M) Rn=Xn/M R1 R2...Rn即为(0,1)上均匀分布的随机数列。而上述方法是伪随机的,{Rn}本质上是递推公式给定的周期序列,周期T可看做logλ(M)。

解决方法是:选择模拟参数并对序列进行统计检验。 1.2选择模拟参数 1)周期长度取决于Xo,λ, M的选择 2)通过选取适当的参数可以改善随机数的性质 几组参考的取值 Xo =1 , λ=7 , M=10^10 Xo =1 , λ=5^13 , M=2 *10^10 Xo =1 , λ=5^17 , M=10^12 1.3对数列进行统计检验 对应序列能否看作X的独立同分布样本,须检验其独立性和均匀性 for i=2:1:size %同余法均匀分布 x(i)= mod ( v*x(i-1), M); y(i)=x(i)/M; end subplot(2,3,1); hist(y,100) [ahat,bhat,ACI,BCI]=unifit(y)% 以0.95的置信度估计样本的参数 首先我们的标准是U ~(0,1),而实验值,ACI表示ahat的范围[-0.0030,0], BCI表示bhat的范围[1.0000,1.0030]。同时样本的均值和方差分别为0.4932 和0.0830,结论与理论值很接近。该样本以0.95的可信度服从(0,1)均匀分布。 2.伯努利分布 2.1算法原理

均匀分布的随机数

随机数的产生 摘要 本文研究了连续型随机数列的产生,先给出了均匀分布的随机数的产生算法,在通过均匀分布的随机数变换得到其他连续型随机数的产生算法.在vc 环境下,我们给出了产生均匀分布随机数的算法,然后探讨了同余法的理论原理.通过均匀随机数产生其他分布的随机数,我们列举了几种通用算法,并讨论各个算法的优缺点,最后以正态分布为例验证高效舍选法的优势. 正文 一、 随机数与伪随机数 随机变量η的抽样序列12,,n ηηη ,…称为随机数列. 如果随机变量η是均匀分布的,则η的抽样序列12,,n ηηη ,…称为均匀随机数列;如果随机变量η是正态分布的随机变量则称其抽样序列为正态随机数列. 比如在掷一枚骰子的随机试验中出现的点数x 是一个随机变量,该随机变量就服从离散型均匀分布,x 取值为1,2,3,4,5,6,取每个数的概率相等均为1/6.如何得到x 的随机数?通过重复进行掷骰子的试验得到的一组观测结果12,,,n x x x 就是x 的随机数.要产生取值为0,1,2,…,9的离散型均匀分布的随机数,通常的操作方法是把10个完全相同的乒乓球分别标上0,1,2,…,9,然后放在一个不透明的袋中,搅拦均匀后从中摸出一球记号码1x 后放回袋中,接着仍将袋中的球搅拌均匀后从袋中再摸出一球记下号码2x 后再放回袋中,依次下去,就得到随机序列12,,,n x x x .通常称类似这种摸球的方法产生的随机数为真正的随机数.但是,当我们需要大量的随机数时,这种实际操作方法需要花费大量的时间,通常不能满足模拟试验的需要,比如教师不可能在课堂上做10000次掷硬币的试验,来观察出现正面的频率.计算机可以帮助人们在很短时间产生大量的随机数以满足模拟的需要,那么计算机产生的随机数是用类似摸球方法产生的吗?不是.计算机是用某种数学方法产生的随机数,实际上是按照一定的计算方法得到的一串数,它们具有类似随机数的性质,但是它们是依照确定算法产生的,便不可能是真正的随机数,所以称计算机产生的随机数为伪随机数.在模拟计算中通常使用伪随机数.对这些伪随机数,只要通过统计检验符合一些统计要求,如均匀性、随机性

概率论与数理统计小报告 正态随机数的产生方法

概率论与数理统计小报告(二)_________正态随机数的产生方法 学院数理学院 专业信息与计算科学 班级 姓名 学号

依据中心极限定理产生正态分布随机数 摘要:由中心极限定理可知,当n很大时,具有期望μ,方差σ2的分布近似为标准正态分布,故可据此产生标准正态分布。并利用Matlab自带的函数对结果进行检验。 关键字:正态分布中心极限定理随机数 正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。 若随机变量服从一个位置参数为、尺度参数为的概率分布,记为: 则其概率密度函数为 正态分布的数学期望值或期望值等于位置参数,决定了分布的位置;其方差的开平方或标准差等于

clc,clear for i=1:1000 R=rand(1,12); X(i)=sum(R)-6; end X=X'; m=mean(X) v=var(X) subplot(1,2,1),cdfplot(X) %绘制经验累计分布函数图,显示了一维向量X的累计概率分布F(x)的图形subplot(1,2,2),histfit(X) %绘制分组数据的柱状分布函数图,即频数图 h=kstest(X, [X normcdf(X, 0,1)])% H = kstest(X)执行Kolmogorov-Smirnov检验标准正态分布比较数据向量x的值。零假设是x为标准的正态分布;另一种假设是x不是标准正态分布。在5%显著水平进行检验,若结果h为1,则说明零假设不成立,拒绝零假设。否则,结果为0,零假设成立,即原分布为标准正态分布 运行结果如下: h = 0 (检验表明分布为标准正态分布) R = (产生的一组12个【0,1】上均匀分布的随机数) Columns 1 through 4 0.5700 0.4027 0.3702 0.0801 Columns 5 through 8

生成高斯分布的matlab程序

clear all; close all; clc; randn('seed',0); %%一维高斯函数 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); figure; %%二维或多维高斯函数 mu=[00]; sigma=[0.30;00.35]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); hold on; %再生成一个 mu=[40]; sigma=[1.20;0 1.85]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); Matlab 的随机函数(高斯分布均匀分布其它分布) Matlab中随机数生成器主要有: betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器

MATL新编产生各种分布的随机数

M A T L新编产生各种分布 的随机数 Revised as of 23 November 2020

MATLAB产生各种分布的随机数 1,均匀分布U(a,b): 产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1分布U(0,1) 产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn) 即产生mm*nn均值为N*P的矩阵 binornd(N,p)则产生一个。而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。 5,产生m*n阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵: exprnd( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 norminvX=norminv(P,mu,sigma)正态逆累积分布函数 expinvX=expinv(P,mu)指数逆累积分布函数 weibinvX=weibinv(P,A,B)威布尔逆累积分布函数 logninvX=logninv(P,mu,sigma)对数正态逆累积分布函数

Chi2invX=chi2inv(P,A,B)卡方逆累积分布函数 BetainvX=betainv(P,A,B)β分布逆累积分布函数 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P的二项随机数据 函数 binornd 格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。 R = binornd(N,P,m) %m指定随机数的个数,与R同维数。 R = binornd(N,P,m,n) %m,n分别表示R的行数和列数 例4-1 >> R=binornd(10, R = 3 >> R=binornd(10,,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n) r1 = 2 1 0 1 1 2 >>r2 = binornd(n,1./n,[1 6]) r2 = 0 1 2 1 3 1 4.1.2 正态分布的随机数据的产生

随机数产生原理

第一节 均匀随机数的产生及其应用 §1.1 随机数的产生 §1.1.1 均匀随机数的产生 随机变量X 的抽样序列 ,,,,21n X X X 称为随机数列。若随机变量X 是均匀分布的,则X 的抽样序列 ,,,,21n X X X 称为均匀随机数列;如果X 是正态分布的随机变量,则称其抽样序列为正态随机数列。 用数学方法产生随机数,就是利用计算机能直接进行算术运算或逻辑运算的特点,产生具有均匀总体、简单子样统计性质的随机数。计算机利用数学方法产生随机数速度快,占用内存少,对模拟的问题可以进行复算检查,通常还具有较好的统计性质。 另外,计算机上用数学方法产生随机数,是根据确定的算法推算出来的,因此严格说来,用数学方法在计算机上产生的“随机数”不能说是真正的随机数,故一般称之为“伪随机数”。不过对这些伪随机数,只要通过统计检验符合一些统计要求,如均匀性、随机性、独立性等,就可以作为真正的随机数来使用。以后,我们统称这样产生的伪随机数为随机数。 首先给出产生均匀随机数的方法,这是产生具有其它分布随机数的基础,而后给出产生其它分布随机数的方法。 §1.1.1 均匀随机数的产生方法 线性同余法简称为LCG 法(Linear Congruence Generator ),它是Lehmer 于1951年提出来的。线性同余法利用数论中的同余运算原理产生随机数。分为乘同余法、混合同余法等,线性同余法是目前发展迅速且使用普遍的方法之一。 线性同余法递推公式为 )(m o d 1M c ax x n n +≡- ,,2,1, ==n M x r n n 其中0x 为初值,a 为乘子,c 为增量,M 为模,且c a x ,,0和M 皆为非负整数。 当0=c 时,上式称为乘同余法公式;当0>c 时,上式称为混合同余法公式。 如下例用乘同余法产生伪随机数:

任意分布的随机数的产生方法

任意分布的随机数的产生方法—VC程序实现方法 作者:戎亚新 下载源代码 摘要: 随机数在实际运用中非常之多,如游戏设计,信号处理,通常我们很容易得到平均分布的随机数。但如何根据平均分布的随机数进而产生其它分布的随机数呢?本文提出了一种基于几何直观面积的方法,以正态分布随机数的产生为例讨论了任意分布的随机数的产生方法。 正文: 一、平均分布随机数的产生 大家都知道,随机数在各个方面都有很大的作用,在vc的环境下,为我们提供了库函数rand()来产生一个随机的整数。该随机数是平均在0~RAND_MAX之间平均分布的,RAND_MAX是一个常量,在VC6.0环境下是这样定义的: #define RAND_MAX 0x7fff 它是一个short 型数据的最大值,如果要产生一个浮点型的随机数,可以将rand()/1000.0这样就得到一个0~32.767之间平均分布的随机浮点数。如果要使得范围大一点,那么可以通过产生几个随机数的线性组合来实现任意范围内的平均分布的随机数。例如要产生-1000~1000之间的精度为四位小数的平均分布 的随机数可以这样来实现。先产生一个0到10000之间的随机整数。方法如下:int a = rand()%10000; 然后保留四位小数产生0~1之间的随机小数: double b = (double)a/10000.0; 然后通过线性组合就可以实现任意范围内的随机数的产生,要实现-1000~1000 内的平均分布的随机数可以这样做: double dValue = (rand()%10000)/10000.0*1000-(rand()%10000)/10000.0*1000; 则dValue就是所要的值。

产生正态分布随机数及M序列

1. 编制两种方法产生正态分布随机数的程序并进行验证分析; 编程思路:产生正态分布随机数的两种方法: (1) 统计近似抽样法: a.设{i y }是(0,1)均匀分布的随机数序列,则 {}1 ()0.5y i i i i E y y p y dy μ===? 1 220 ()()1/12y i y i i y p y dy σμ=-=? b.根据中心极限定理,当N →∞时, 1 1 2 ()2 ()~(0,1)/12 N N i y i i i y N y k N y x k N N N μ σ==--= = ∑∑ c.如需产生均值为x μ,方差为2x σ的正态分布随机变量x ,只需如下计算: 212 ~(,)/12 N i i x x x x N y x N N μσμσ=- =+∑,试验证明12N =时,x 的统计性质就 比较理想了。 (2) 变换抽样法: 设12,y y 是两个相互独立的(0,1)均匀分布的随机变量,则新变量 1/21121/2 212(2log )cos(2) (2log )sin(2) x y y x y y ππ?=-?=-? 是相互独立的,服从(0,1)N 分布的随机变量。 利用统计近似抽样法和变换抽样法的定义及之前产生(0,1)均匀分布的随机数的基本方法如乘同余法、混合同余法等产生正态分布随机数。 调试过程遇到的问题:(1)在用统计近似抽样法产生正态分布随机数时,给定,μσ,然后用 Matlab 自带函数检验结果,感觉数据老对不上? 解决方法:自己设定的,μσ分别是均值,标准差,利用Matlab 自带函 数mean(),var()计算出来的分别是均值,方差,总觉得方差老对不上,其实是自己理解问题,var()计算出来的方差数值肯定是自己设定的标准差的平方大小左右。 (2)Matlab 下标从1开始;做运算两个矩阵的尺寸大小得对应上,还有 调用的值一定得有值。 程序运行结果分析得到的结论: (1)统计近似抽样法:

一维正态分布随机数生成算法

一维正态分布随机数生成算法 班级:###班姓名:### 学号:########## 一、介绍: 正态分布在数理统计中具有基础性的作用,因此产生高质量的正态分布有重要的意义。本报告中通过利用MATLAB工具,来编译并且运行算法,通过本算法可以产生符合一维正态分布的随机数,从而达到本报告的作用,通过绘制正态分布的图形,说明算法的正确性。 正态分布的定义:若连续随机变量§的概率密度为 然而,得到服从正态分布的随机数的基本思想是先得到服从均匀分布的随机数,再将服从均匀分布的随机数转变为服从正态分布。 二、算法过程: 1.利用中心极限定理

2、产生服从N(μ,σ2)的算法步骤: (1) 产生n 个RND 随机数:r 1,r 2,…,r n ; (2) (3) 计算 y =σx +μ ,y 是服从 N(μ,σ2) 分布的随机数。 3、原理分析: 设ζ1,ζ2,…,ζn 是n 个相互独立的随机变量,且ζi ~U(0,1), i = 1,2, …,n, 由中心极限定理知 : ,渐近服从正态分布N(0, l )。 注意:我们现在已经能产生[0,1]均匀分布的随机数了,那么我们可以利用这个定理来产生标准正态分布的随机数。 现在我们产生n 个[0,1]均匀分布随机数, 我们有: 为方便起见,我们特别选 n = 12,则 : 这样我们很方便地就把标准正态分布随机数计算出来了。 ; / )(112 2∑=-=n i n n i r x 计算,12 1 )()(21= =i i D E ζζ,有∑=-=n i n n i 1 12 2/)(ζηn r r r ,,,21 ? ?? ? ??-=∑=211121n i i r n n u ∑=-=12 1 6 i i r u

随机数生成及各概率分布

随机数生成及各概率分布 一.随机数生成及(0,1)均匀分布 1.乘同余法生成随机数: 乘同余法的迭代式如下: Xn+1=Lamda*Xn(mod M) Rn+1=Xn/M 这里取X0=1,Lamda=7^5,M=2^31-1; 利用乘同余法生成的300个(0,1)之间的随机数为(这里仅显示200个数据) 0.0000 0.1315 0.7556 0.4587 0.5328 0.2190 0.0470 0.6789 0.6793 0.9347 0.3835 0.5194 0.8310 0.0346 0.0535 0.5297 0.6711 0.0077 0.3834 0.0668 0.4175 0.6868 0.5890 0.9304 0.8462 0.5269 0.0920 0.6539 0.4160 0.7012 0.9103 0.7622 0.2625 0.0475 0.7361 0.3282 0.6326 0.7564 0.9910 0.3653 0.2470 0.9826 0.7227 0.7534 0.6515 0.0727 0.6316 0.8847 0.2727 0.4364 0.7665 0.4777 0.2378 0.2749 0.3593 0.1665 0.4865 0.8977 0.9092 0.0606 0.9047 0.5045 0.5163 0.3190 0.9866 0.4940 0.2661 0.0907 0.9478 0.0737 0.5007 0.3841 0.2771 0.9138 0.5297 0.4644 0.9410 0.0501 0.7615 0.7702 0.8278 0.1254 0.0159 0.6885 0.8682 0.6295 0.7362 0.7254 0.9995 0.8886 0.2332 0.3063 0.3510 0.5133 0.5911 0.8460 0.4121 0.8415 0.2693 0.4154 0.5373 0.4679 0.2872 0.1783 0.1537 0.5717 0.8024 0.0331 0.5344 0.4985 0.9554 0.7483 0.5546 0.8907 0.6248 0.8420 0.1598 0.2128 0.7147 0.1304 0.0910 0.2746 0.0030 0.4143 0.0269 0.7098 0.9379 0.2399 0.1809 0.3175 0.8870 0.6521 0.1503 0.6813 0.3858 0.3877 0.4997 0.1475 0.5872 0.8456 0.5901 0.9554 0.5561 0.1482 0.9833 0.4088 0.1418 0.5649 0.2521 0.4885 0.4640 0.9611 0.1260 0.1998 0.3192 0.6293 0.1267 0.6513 0.6216 0.8031 0.2478 0.4764 0.3893 0.2033 0.0284 0.9017 0.4265 0.1420 0.9475 0.4103 0.1312 0.8856 0.0922 0.1622 0.0711 0.3653 0.2531 0.1351 0.7832 0.4553 0.3495 0.4523 0.8089 0.9317 0.6516 0.2152 0.6796 0.9089 0.2501 0.8609 0.4713 0.5060 0.6004 0.8176 0.7558 0.4622 0.9514 0.6327 0.4393 0.8247 2.(0,1) 均匀分布数据的检验 (1)通过计算得均值为()5081.0=X E ,二阶矩为()3423.02=X E ,方差为0842.02=S (2)均基本满足(0,1)均匀分布的均值()21=X E ,二阶矩为()312=X E ,方差为1212 =S 所以认为该随机序列基本上符合(0,1)均匀分布。 (3)(0,1)均匀分布的随机序列

相关文档
相关文档 最新文档