ImageVerifierCode 换一换
格式:PPT , 页数:25 ,大小:225KB ,
资源ID:5830368      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5830368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蒙特卡罗方法(Monte_Carlo_simulation).ppt)为本站会员(11xg27ws)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

蒙特卡罗方法(Monte_Carlo_simulation).ppt

1、实验数据处理方法 第二部分:Monte Carlo模拟,第七章 均匀分布随机数的产生,随机数的定义和特性,随机数的产生,线性乘同余方法,第七章 均匀分布随机数的产生,7.1 随机数的定义和特性,7.1 随机数的定义和特性,什么是随机数?,单个的数字不是随机数,是指一个数列,其中的每一个体称为随机数,其值与数列中的其它数无关;,在一个均匀分布的随机数中,每一个体出现的概率是均等的;,例如:在0,1区间上均匀分布的随机数序列中,0.00001与0.5出现的机会均等,7.1 随机数的定义和特性,随机数应具有的基本特性,考虑一个对高能粒子反应过程的模拟:需用随机数确定:,出射粒子的属性:能量、方向、,

2、粒子与介质的相互作用,对这一过程的模拟应满足以下要求(相空间产生过程):,出射粒子的属性应是互不相关的,即每一粒子的属性的确定独立于其它的粒子的属性的确定;,粒子的属性的分布应满足物理所要求的理论分布;,所模拟的物理过程要求随机数应具有下列特性:,随机数序列应是独立的、互不相关的(uncorrelated):,即序列中的任一子序列应与其它的子序列无关;,7.1 随机数的定义和特性,长的周期(long period):,实际应用中,随机数都是用数学方法计算出来的,这些算法具有周期性,即当序列达到一定长度后会重复;,均匀分布的随机数应满足均匀性(Uniformity):,随机数序列应是均匀的、无偏

3、的,即:如果两个子区间的“面积”相等,则落于这两个子区间内的随机数的个数应相等。,例如:对0,1)区间均匀分布的随机数,如果产生了足够多的随机数,而有一半的随机数落于区间0,0.1不满足均匀性,如果均匀性不满足,则会出现序列中的多组随机数相关的情况均匀性与互不相关的特性是有联系的,7.1 随机数的定义和特性,有效性(Efficiency):,模拟结果可靠,模拟产生的样本容量大,所需的随机数的数量大,随机数的产生必须快速、有效,最好能够进行并行计算。,第七章 均匀分布随机数的产生,7.2 随机数的产生,7.2 随机数的产生,0,1区间上均匀分布的随机数是Monte Carlo模拟的基础:,0,1

4、均匀分布的随机数的产生方法:,利用一些具有内在的随机性的过程:,缺点:模拟的结果不可再现,使得模拟程序的找错困难,利用事先制订好的随机数表:,缺点:表的容量有限,不适合需要大量随机数的应用,服从任意分布的随机数序列可以用0,1区间均匀分布的随机数序列作适当的变换或舍选后求得,7.2 随机数的产生,利用数学递推公式在计算机中产生随机数,其中:T为某个函数,给定初值r1,r2,rk,可按上式确定rn+1, n=1,2, 随机数序列.,算法:产生0,M区间上的整数In,然后利用公式rn=In/M返回0,1区间上的实数,优点:,占用计算机的内存少; 产生速度快; 可以重复前次的模拟结果,便于程序的找错

5、;,7.2 随机数的产生,缺点:,不满足随机数之间相互独立的要求:公式和初值确定后,序列就唯一地确定了;,伪随机数(Pseudo-Random Number),不满足均匀性:计算机能表示的0,1区间内的数是有限的(由字长确定)递推到一定次数后,出现周期性的重复现象,第七章 均匀分布随机数的产生,7.3 线性乘同余方法 (Linear Congruential Method),7.3 线性乘同余方法 (Linear Congruential Method),mod:取模运算:(aIn+c)除以m后的余数实型随机数序列:,1948年由Lehmer提出的一种产生伪随机数的方法,是最常用的方法。,1、

6、递推公式:,其中:,I0: 初始值(种子seed) a: 乘法器 (multiplier) c: 增值(additive constant) m: 模数(modulus) mod:取模运算:(aIn+c)除以m后的余数,a, c和m皆为整数产生整型的随机数序列,随机性来源于取模运算,如果c=0 乘同余法:速度更快,也可产生长的随机数序列,7.3 线性乘同余方法 (Linear Congruential Method),2、实型随机数序列:,3、特点:,1)最大容量为m:,7.3 线性乘同余方法 (Linear Congruential Method),4、模数m的选择:,m 应尽可能地大,因为

7、序列的周期不可能大于m;,通常将m取为计算机所能表示的最大的整型量,在32位计算机上,m=231=2x109,5、乘数因子a的选择:,1961年,M. Greenberger证明:用线性乘同余方法产生的随机数序列具有周期m的条件是:,c和m为互质数; a-1是质数p的倍数,其中p是a-1和m的共约数; 如果m是4的倍数,a-1也是4的倍数。,例:a=5,c=1,m=16,I0=1 周期=m=161,6,15,12,13,2,11,8,9,14,7,4,5,10,3,0,1,6,15, 12,13,2,7.3 线性乘同余方法 (Linear Congruential Method),RANDU随

8、机数产生器:,1961年由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(unsigned long i) seed = i; ,7.3 线性乘同余方法 (Linear Congruential Method),存在严重的问题:Marsaglia效用,存

9、在于所有乘同余方法的产生器,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(“pad3“,“one vs one vs one“,0.03,0.02,0.97,0.57,21);pad1-Draw(); pad2-Dra

10、w(); 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);,7.3 线性乘同余方法 (Linear Congruential Method),for(int i=0; i Fill(x);h2-Fill(x,y);h3-Fill(x,y,z); pad1-cd(); h1-Draw();

11、pad2-cd(); h2-Draw();pad3-cd(); h3-Draw(); ,7.3 线性乘同余方法 (Linear Congruential Method),7.3 线性乘同余方法 (Linear Congruential Method),如果取a=69069,将极大地改善结果,7.3 线性乘同余方法 (Linear Congruential Method),1968年,Marsaglia对这一问题进行了研究,认为:,任何的乘同余产生器都存在这一问题:在三维和三维以上的空间中,所产生的随机数总是集聚在一些超平面上,随机数序列是关联的,改进措施:将递推公式修改为,特点:1)需要两个初

12、始值(种子);2)周期可大于m;,7.3 线性乘同余方法 (Linear Congruential Method),#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 = pow(2,31);i2 = (a * seed1 + b * seed0 ) % m;seed0 = seed1; seed1 = i2;r

13、eturn (float) i1/float(m); ,void SetSeed(unsigned long i0,unsigned long i1) seed0 = i0;seed1 = i1; ,7.3 线性乘同余方法 (Linear Congruential Method),a=b=65539, seed0=9, seed1=11,7.3 线性乘同余方法 (Linear Congruential Method),如何获取0,1区间均匀分布的随机数产生器:,每一个Monte Carlo模拟程序软件包都有自带的产生器:,.,利用CERN程序库:,7.3 线性乘同余方法 (Linear Congruential Method),CLHEP(Class Library for High Energy Physics)中的随机数产生器,利用CLHEP中的随机数产生器软件包:,http:/ 线性乘同余方法 (Linear Congruential Method),FORTRAN中使用随机数产生器应注意的问题:,FORTRAN编译器在对程序进行优化时:,X=RAND(IDUM)+RAND(IDUM) X=2.0*RAND(IDUM),解决办法:,DO I=1,10IDUM = IDUM +1X=RAND(IDUM) END DO,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报