实验数据处理方法_第1页
实验数据处理方法_第2页
实验数据处理方法_第3页
实验数据处理方法_第4页
实验数据处理方法_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章第七章均匀分布随机数的产生均匀分布随机数的产生随机数的定义和特性随机数的定义和特性随机数的产生随机数的产生 线性乘同余方法线性乘同余方法第七章第七章均匀分布随机数的产生均匀分布随机数的产生7.1 随机数的定义和特性随机数的定义和特性什么是随机数?什么是随机数?单个的数字不是随机数单个的数字不是随机数是指一个数列,其中的每一个体称为随机数,其值与数列中是指一个数列,其中的每一个体称为随机数,其值与数列中的其它数无关;的其它数无关;在一个均匀分布的随机数中,每一个体出现的概率是均等的;在一个均匀分布的随机数中,每一个体出现的概率是均等的;v例如:在例如:在0,1区间上均匀分布的随机数序列中,

2、区间上均匀分布的随机数序列中,0.00001与与0.5出现的机会均等出现的机会均等随机数应具有的基本特性随机数应具有的基本特性考虑一个对高能粒子反应过程的模拟:需用随机数确定:考虑一个对高能粒子反应过程的模拟:需用随机数确定:v出射粒子的属性:能量、方向、出射粒子的属性:能量、方向、v粒子与介质的相互作用粒子与介质的相互作用对这一过程的模拟应满足以下要求(相空间产生过程):对这一过程的模拟应满足以下要求(相空间产生过程):v 出射粒子的属性应是互不相关的,即每一粒子的属出射粒子的属性应是互不相关的,即每一粒子的属性的确定独立于其它的粒子的属性的确定;性的确定独立于其它的粒子的属性的确定;v 粒

3、子的属性的分布应满足物理所要求的理论分布;粒子的属性的分布应满足物理所要求的理论分布;所模拟的物理过程要求随机数应具有下列特性:所模拟的物理过程要求随机数应具有下列特性:v随机数序列应是独立的、互不相关的随机数序列应是独立的、互不相关的(uncorrelated):即序列中的任一子序列应与其它的子序列无关;即序列中的任一子序列应与其它的子序列无关;v长的周期长的周期(long period):实际应用中,随机数都是用数学方法计算出来的,这些实际应用中,随机数都是用数学方法计算出来的,这些算法具有周期性,即当序列达到一定长度后会重复;算法具有周期性,即当序列达到一定长度后会重复;v均匀分布的随机

4、数应满足均匀性均匀分布的随机数应满足均匀性(Uniformity):随机数序列应是均匀的、无偏的,即:如果两个子区间随机数序列应是均匀的、无偏的,即:如果两个子区间的的“面积面积”相等,则落于这两个子区间内的随机数的个相等,则落于这两个子区间内的随机数的个数应相等。数应相等。例如:对例如:对0,1)区间均匀分布的随机数,如果产生区间均匀分布的随机数,如果产生了足够多的随机数,而有一半的随机数落于了足够多的随机数,而有一半的随机数落于区间区间0,0.1不满足均匀性不满足均匀性如果均匀性不满足,则会出现序列中的多组随机数相如果均匀性不满足,则会出现序列中的多组随机数相关的情况关的情况均匀性与互不相

5、关的特性是有联系的均匀性与互不相关的特性是有联系的v有效性(有效性(Efficiency):模拟结果可靠模拟结果可靠 模拟产生的样本容量大模拟产生的样本容量大所需的随机数的数量大所需的随机数的数量大随机数的产生必须快速、有效,最好能随机数的产生必须快速、有效,最好能够进行并行计算。够进行并行计算。第七章第七章均匀分布随机数的产生均匀分布随机数的产生7.2 随机数的产生随机数的产生 0,10,1区间上均匀分布的随机数是区间上均匀分布的随机数是Monte CarloMonte Carlo模拟的基础模拟的基础: : 0,10,1均匀分布的随机数的产生方法:均匀分布的随机数的产生方法:利用一些具有内在

6、的随机性的过程:利用一些具有内在的随机性的过程:放射性衰变过程(放射性衰变过程(radioactive decay)radioactive decay);热噪声热噪声( (thermal noise);thermal noise);宇宙线的到达时间(宇宙线的到达时间(cosmic ray arrival);cosmic ray arrival);缺点:模拟的结果不可再现,使得模拟程序的找错困难缺点:模拟的结果不可再现,使得模拟程序的找错困难利用事先制订好的随机数表利用事先制订好的随机数表: :缺点:表的容量有限,不适合需要大量随机数的应用缺点:表的容量有限,不适合需要大量随机数的应用服从任意分

7、布的随机数序列可以用服从任意分布的随机数序列可以用0,10,1区间均匀分布的区间均匀分布的随机数序列作适当的变换或舍选后求得随机数序列作适当的变换或舍选后求得),.,(11knnnknrrrTr利用数学递推公式在计算机中产生随机数利用数学递推公式在计算机中产生随机数其中:其中:T为某个函数,给定初值为某个函数,给定初值r1,r2,rk,可按上式确可按上式确定定rn+1, n=1,2, 随机数序列随机数序列.算法:产生算法:产生0,M区间上的整数区间上的整数In,然后利用公式,然后利用公式rn=In/M返回返回0,1区间上的实数区间上的实数优点:优点:占用计算机的内存少;占用计算机的内存少;产生

8、速度快;产生速度快;可以重复前次的模拟结果,便于程序的找错;可以重复前次的模拟结果,便于程序的找错;缺点:缺点: 不满足随机数之间相互独立的要求:公式和初值确定不满足随机数之间相互独立的要求:公式和初值确定后,序列就唯一地确定了;后,序列就唯一地确定了;伪随机数(伪随机数(Pseudo-Random Number) 不满足均匀性:计算机能表示的不满足均匀性:计算机能表示的0,1区间内的数是有限区间内的数是有限的(由字长确定)的(由字长确定) 递推到一定次数后,出现周期性的重复现象递推到一定次数后,出现周期性的重复现象第七章第七章均匀分布随机数的产生均匀分布随机数的产生7.3 线性乘同余方法线性

9、乘同余方法(Linear Congruential Method)mcaIInnmod)(1caImca,0,019481948年由年由LehmerLehmer提出的一种产生伪随机数的方法,是最常用的方法。提出的一种产生伪随机数的方法,是最常用的方法。1 1、递推公式:、递推公式:其中:其中:I0: 初始值(种子初始值(种子seed) a: 乘法器乘法器 (multiplier) c: 增值(增值(additive constant) m: 模数(模数(modulus) mod:取模运算:取模运算:(aIn+c)除以除以m后的余数后的余数a, c和和m皆为整数皆为整数 产生整型的随机数序列产生

10、整型的随机数序列,随机性来源于取模运算随机性来源于取模运算如果如果c=0 乘同余法:速度更快,也可产生长的随机数序列乘同余法:速度更快,也可产生长的随机数序列1 ,0)1()1 ,0)(mfloatIrmfloatIrnnnn1mImInn2 2、实型随机数序列:、实型随机数序列:3、特点:、特点:1)最大容量为)最大容量为m:mIn02)独立性和均匀性取决于参数)独立性和均匀性取决于参数a和和c的选择的选择例:例:a=c=I0=7, m=10 7,6,9,0,7,6,9,0,4、模数、模数m的选择:的选择: m 应尽可能地大,因为序列的周期不可能大于应尽可能地大,因为序列的周期不可能大于m;

11、 通常将通常将m取为计算机所能表示的最大的整型量,在取为计算机所能表示的最大的整型量,在32位计算位计算机上,机上,m=231=2x1095、乘数因子、乘数因子a的选择:的选择:1961年,年,M. Greenberger证明:用线性乘同余方法产生的随机证明:用线性乘同余方法产生的随机数序列具有周期数序列具有周期m的条件是:的条件是:1. c和和m为互质数;为互质数;2. a-1是质数是质数p的倍数,其中的倍数,其中p是是a-1和和m的共约数;的共约数;3. 如果如果m是是4的倍数,的倍数,a-1也是也是4的倍数。的倍数。例:例:a=5,c=1,m=16,I0=1 周期周期=m=16 1,6,

12、15,12,13,2,11,8,9,14,7,4,5,10,3,0,1,6,15, 12,13,2,.RANDU随机数产生器:随机数产生器:3112mod)65539(nnII1961年由年由IBM提出提出unsigned long seed = 9;float randu() const unsigned long a = 65539; const unsigned long m = pow(2,31); unsigned long i1; i1 = (a * seed) % m; seed = i1; return (float) i1/float(m);void SetSeed(unsi

13、gned long i) seed = i;存在严重的问题:存在严重的问题: MarsagliaMarsaglia效用,存在于所有乘同余方法的产生器效用,存在于所有乘同余方法的产生器void test() c1 = new TCanvas(c1,“Test of random number generator,200,10,700,900); pad1 = new TPad(pad1,“one ,0.03,0.62,0.50,0.92,21); pad2 = new TPad(pad2,“one vs one,0.51,0.62,0.98,0.92,21); pad3 = new TPad(p

14、ad3,“one vs one vs one,0.03,0.02,0.97,0.57,21); pad1-Draw(); pad2-Draw(); pad3-Draw(); TH1F * h1 = new TH1F(h1,h1,100,0.0,1.0); TH2F * h2 = new TH2F(h2,h2,100,0.0,1.0,100,0.0,1.0); TH3F * h3 = new TH3F(h3,h3,100,0.0,1.0,100,0.0,1.0,100,0.0,1.0); for(int i=0; i Fill(x); h2-Fill(x,y); h3-Fill(x,y,z);

15、pad1-cd(); h1-Draw(); pad2-cd(); h2-Draw(); pad3-cd(); h3-Draw(); 如果取如果取a=69069,a=69069,将极大地改善结果将极大地改善结果mIbIaInnnmod)(211968年,年,Marsaglia对这一问题进行了研究,认为:对这一问题进行了研究,认为:任何的乘同余产生器都存在这一问题:在三维和三维以任何的乘同余产生器都存在这一问题:在三维和三维以上的空间中,所产生的随机数总是集聚在一些超平面上上的空间中,所产生的随机数总是集聚在一些超平面上随机数序列是关联的随机数序列是关联的对于对于32位的计算机,在位的计算机,在d

16、-维空间中超平面的最大数目为维空间中超平面的最大数目为d=3 2953d=4 566d=6 120d=10 41改进措施:将递推公式修改为改进措施:将递推公式修改为特点:特点:1)需要两个初始值(种子);)需要两个初始值(种子); 2)周期可大于)周期可大于m;#include unsigned long seed0 = 9;unsigned long seed1 = 11;float randac() const unsigned long a = 65539; const unsigned long b = 65539; unsigned long i2; unsigned long m

17、= pow(2,31); i2 = (a * seed1 + b * seed0 ) % m; seed0 = seed1; seed1 = i2; return (float) i1/float(m);void SetSeed(unsigned long i0, unsigned long i1) seed0 = i0; seed1 = i1;a=b=65539, seed0=9, seed1=11如何获取如何获取0,1区间均匀分布的随机数产生器:区间均匀分布的随机数产生器:1. 每一个每一个Monte Carlo模拟程序软件包都有自带的产生器:模拟程序软件包都有自带的产生器: Jetset(LUND Monte Carlo模拟系列):利用模拟系列):利用Marsaglia等等所提出的算法,周期可达所提出的算法,周期可达1043函数用法:函数用法:r=rlu(idummy) Geant3(探测器模拟程序,探测器模拟程序,FORTRAN): 周期周期=1018Call grndm(vec*,len).2. 利用利用CERN程序库:程序库: Y=rndm(x): 周期:周期:5x108 Y=rn32(dummy):乘同余法,乘同余法,a=69069,i0=65539 Call ra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论