文档库 最新最全的文档下载
当前位置:文档库 › 一维正态分布随机数生成算法

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

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

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

班级:###班姓名:### 学号:##########

一、介绍:

正态分布在数理统计中具有基础性的作用,因此产生高质量的正态分布有重要的意义。本报告中通过利用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

三、算法代码及生成随机数表格及解释

function m = zhengtaifenbu(miu,sigma)

%UNTITLED2 Summary of this function goes here %Detailed explanation goes here

n=zeros(1,1200);

m=n;

figure(1)

for i=1:1200

r=rand(1,12);

n(i)= (sum(r)-6);

end

m=sigma*n+miu;

subplot(1,2,1)

cdfplot(m) ;

subplot(1,2,2)

ksdensity(m);

End

随机数表格:

(*选取数据中的一部分加以说明)

(利用产生的随机数绘制出来的平滑曲线)

中心极限定理说明,无穷多个具有相同分布的随机变量之和是服从标准正态分布的。相应的,如果多个随机变量均为[0,1]区间的均匀分布,则生成标准正态分布的式子为:

其中,k 为[0,1]区间均匀分布的随机变量的个数。k 值可以根据计

算精度来选取,若取 k=12,则。此时算得的将不超过(-6,6)的范围,这对于一般可靠度的计算已达足够精度。

四、小结

一维正态分布随机数序列产生的方法虽然有很多种,但是利用中心极限定理的方法最为简单,利用这个原理,我们可以逐步的进行计

算,最后产生符合正态分布的一维随机数组,同时,我们利用MATLAB 工具,产生了符合正态分布的数字,并且,用做图软件把这些点用平滑的曲线描绘出来,使我们可以清楚的看到,这些点是符合我们的假设的,从而,验证了我们的代码的正确性。

五、参考文献:

【1】魏宗舒;概率论与数理统计[M]。北京:高等教育出版社,1995

【2】马砚儒. 经验数学期望及性质[J]。内蒙古民族大学学报,2002

【3】程维虎,杨振海;舍选法几何解释及曲边梯形概率密度随机数生产算法[J]。数理统计与管理,2006,25

【4】杨振海,程维虎.统计模拟[J]。数理统计与管理,2006

【5】杨自强,魏公毅. 产生伪随机数的若干新方法.数值计算机应用,2001

【6】王萍,许海洋.一种新的随机数组合发生器的研究计算机技术与发展,

2006

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 -∞-∞ = ? ,则

C语言中产生随机数的方法

C语言中产生随机数的方法 引例:产生10个[100-200]区间内的随机整数。 #include #include //rand函数的头文件 #include //时间函数的头文件 int main() { int i; //循环变量 srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子) for (i=0; i<10; i++) //printf("%d\n", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数 //printf("%d\n", rand()%100); //产生0-99的随机整数 printf("%d\n", rand()%(200-100+1) + 100); //产生[100,200]内的随机整数return 0; } 在C语言中产生随机数需要以下几个函数的配合使用。 (1)rand函数——产生伪随机数 原型:int rand(void) 头文件:stdlib.h 功能:产生从0到RAND_MAX之间的随机数。RAND_MAX的值通常是0x7fff(十六进制数7FFF,也就是十进制数32767)。 例: #include #include int main() { int k; k = rand(); printf("%d\n", k); return 0; } 编译运行,发现每次运行程序产生的随机数都是一样的。 计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法中计算结果,所以叫“伪随机数”。 C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。 为上面的例子增加一个循环结构: #include #include int main() { int k,i;

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

各型分布随机数的产生算法 随机序列主要用概率密度函数(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 π=-

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

一维正态分布随机数序列的产生方法 一、文献综述 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).物理方法

真随机数产生方法

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、利用计算机内部函数产生高斯分布的随机数,分别画出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)

随机数生成方法

University of Sydney School of Information Technologies Generating Random Variables Pseudo-Random Numbers Definition : A sequence of pseudo-random numbers ()i U is a deterministic sequence of numbers in []1,0 having the same relevant statistical properties as a sequence of random numbers. The most widely used method of generating pseudo-random numbers are the congruential generators: ()M X U M c aX X i i i i =+=?mod 1 for a multiplier a , shift c , and modulus M , all integers. The sequence is clearly periodic, with maximum period M . The values of a and c must be carefully chosen to maximise the period of the generator, and to ensure that the generator has good statistical properties. Some examples: M a c 259 1313 0 232 69069 1 231-1 630360016 0 232 2147001325 715136305 Reference: Ripley, Stochastic Simulation , Chapter 2

随机数产生方法

伪随机数的产生,现在用得较多的是“线性同余法" 就是下面这个式子 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

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

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

依据中心极限定理产生正态分布随机数 摘要:由中心极限定理可知,当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

随机数产生原理及实现

电子信息与通信工程学院 实验报告 实验名称随机数的产生 课程名称随机信号分析 姓名顾康学号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算法原理

生成高斯分布的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分布的随机数生成器

EXCEL随机数据生成方法

求教:我的电子表格中rand()函数的取值范围是-1到1,如何改回1到0 回答:有两种修改办法: 是[1-rand()]/2, 或[1+rand()]/2。 效果是一样的,都可生成0到1之间的随机数 电子表格中RAND()函数的取值范围是0到1,公式如下: =RAND() 如果取值范围是1到2,公式如下: =RAND()*(2-1)+1 RAND( ) 注解: 若要生成a 与b 之间的随机实数: =RAND()*(b-a)+a 如果要使用函数RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。 示例 RAND() 介于0 到1 之间的一个随机数(变量) =RAND()*100 大于等于0 但小于100 的一个随机数(变量) excel产生60-70随机数公式 =RAND()*10+60 要取整可以用=int(RAND()*10+60) 我想用excel在B1单元个里创建一个50-80的随机数且这个随机数要大于A1单元个里的数值,请教大家如何编写公式! 整数:=ROUND(RAND()*(80-MAX(50,A1+1))+MAX(50,A1+1),0) 无需取整数:=RAND()*(80-MAX(50,A1))+MAX(50,A1)

要求: 1,小数保留0.1 2,1000-1100范围 3,不要出现重复 =LEFT(RAND()*100+1000,6) 至于不许重复 你可以设置数据有效性 在数据-有效性设 =countif(a:a,a1)=1 选中a列设有效性就好了 其他列耶可以 急求excel随机生成数字的公式,取值要在38.90-44.03之间,不允许重复出现,保留两位小数,不允许变藏 =round(RAND()*5+38.9,2) 公式下拉 Excel随机数 Excel具有强大的函数功能,使用Excel函数,可以轻松在Excel表格产生一系列随机数。 1、产生一个小于100的两位数的整数,输入公式=ROUNDUP(RAND()*100,0)。 RAND()这是一个随机函数,它的返回值是一个大于0且小于1的随机小数。ROUNDUP 函数是向上舍入数字,公式的意义就是将小数向上舍入到最接近的整数,再扩大100倍。 2、产生一个四位数N到M的随机数,输入公式=INT(RAND()*(M-N+1))+N。 这个公式中,INT函数是将数值向下取整为最接近的整数;因为四位数的随机数就是指从1000到9999之间的任一随机数,所以M为9999,N为1000。RAND()的值是一个大于0且小于1的随机小数,M-N+1是9000,乘以这个数就是将RAND()的值对其放大,用INT 函数取整后,再加上1000就可以得到这个范围内的随机数。[公式=INT(RAND()*(9999-1000+1))+1000] 3、Excel函数RANDBETWEEN是返回位于两个指定数之间的一个随机数。使用这一个函数来完成上面的问题就更为简单了。要使用这个函数,可能出现函数不可用,并返回错误值#NAME?。 选择"工具"菜单,单击"加载宏",在"可用加载宏"列表中,勾选"分析工具库",再单击"确定"。接下来系统将会安装并加载,可能会弹出提示需要安装源,也就是office安装盘。放入光盘,点击"确定",完成安装。 现在可以在单元格输入公式=RANDBETWEEN(1000,9999)。 最后,你可以将公式复制到所有需要产生随机数的单元格,每一次打开工作表,数据都会自动随机更新。在打开的工作表,也可以执行功能键F9,每按下一次,数据就会自动随机更新了。

均匀分布的随机数

随机数的产生 摘要 本文研究了连续型随机数列的产生,先给出了均匀分布的随机数的产生算法,在通过均匀分布的随机数变换得到其他连续型随机数的产生算法.在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次掷硬币的试验,来观察出现正面的频率.计算机可以帮助人们在很短时间产生大量的随机数以满足模拟的需要,那么计算机产生的随机数是用类似摸球方法产生的吗?不是.计算机是用某种数学方法产生的随机数,实际上是按照一定的计算方法得到的一串数,它们具有类似随机数的性质,但是它们是依照确定算法产生的,便不可能是真正的随机数,所以称计算机产生的随机数为伪随机数.在模拟计算中通常使用伪随机数.对这些伪随机数,只要通过统计检验符合一些统计要求,如均匀性、随机性

实验一随机序列的产生及数字特征估计

实验一随机序列的产生及数字特征估计 一、实验目的 1、学习和掌握随机数的产生方法。 2、实现随机序列的数字特征估计。 二、实验原理 1、随机数的产生 随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。进行随机信号仿真分析时,需要模拟产生各种分布的随机数。在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。(0,1)均匀分布随机数是最最基本、最简单的随机数。(0,1)均匀分布指的是在[0,1]区间上的均匀分布,即U(0,1)。实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下: y0=1,y n=ky n?1mod N(1.1) x n=y n N 序列x n为产生的(0,1)均匀分布随机数。 下面给出了(1.1)式的3 组常用参数: ①N = 1010,k = 7,周期≈5*10^7; ②(IBM随机数发生器)N = 2^31,k = 2^16 + 3,周期≈5*10^8;

③(ran0)N = 2^31 - 1,k = 7^5,周期≈2*10^9; 由均匀分布随机数,可以利用反函数构造出任意分布的随机数。 定理1.1 若随机变量X具有连续分布函数F X(X),而R为(0,1)均匀分布随机变量,则有 X=F X?1(R)(1.2) 由这一定理可知,分布函数为F X(X)的随机数可以由(0,1)均匀分布随机数按(1.2)式进行变换得到。 2、MATLAB 中产生随机序列的函数 (1)(0,1)均匀分布的随机序列 函数:rand 用法:x = rand(m,n) 功能:产生m×n的均匀分布随机数矩阵。 (2)正态分布的随机序列 函数:randn 用法:x = randn(m,n) 功能:产生m×n的标准正态分布随机数矩阵。 如果要产生服从N(μ,σ2)分布的随机序列,则可以由标准正态随机序列产生。(3)其他分布的随机序列 MATLAB 上还提供了其他多种分布的随机数的产生函数,表1.1 列出了部分函数。

产生正态分布随机数及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)统计近似抽样法:

相关文档