Monte Carlo模拟 第二章 均匀分布随机数的产生 2.1 随机数的定义和特性 2.2 随机数的产生 2.3 线形乘同余方法

Slides:



Advertisements
Similar presentations
质数和合数 中心小学 顾禹 人教版小学五年级数学下册 一、激趣导入 提示:密码是一个三位 数,它既是一个偶数, 又是 5 的倍数;最高位是 9 的最大因数;中间一位 是最小的质数。你能打 开密码锁吗?
Advertisements

3 的倍数特征 抢三十
质数和合数 2 的因数( ) 6 的因数( ) 10 的因数 ( ) 12 的因数 ( ) 14 的因数 ( ) 11 的因数 ( ) 4 的因数( ) 9 的因数( ) 8 的因数( ) 7 的因数( ) 1 、 2 、 3 、 4 、 6 、 12 1 、 11 1 、 2 、 5 、 10.
一、 一阶线性微分方程及其解法 二、 一阶线性微分方程的简单应用 三、 小结及作业 §6.2 一阶线性微分方程.
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
因数与倍数 2 、 5 、 3 的倍数的特 征 新人教版五年级数学下册 执教者:佛山市高明区明城镇明城小学 谭道芬.
2 、 5 的倍数的特征 重庆市九龙坡区玉清寺小学 徐顺平 人教版小学数学五年级下册
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
第一章 十六世紀中葉以前的臺灣與原住民 第一節 考古發掘與史前文化.
§3.4 空间直线的方程.
量化vs質性研究分析 量化vs質性研究分析 報告人:王秀民.
第五章 会计职业道德.
一、能线性化的多元非线性回归 二、多元多项式回归(线性化)
唐宋傳奇、筆記小品和史書、論著中的寓言 中碩二 吳佳樺.
兒童期 7 青春期 兩性圓舞曲 乘客:七年級同學 司機:張立杰老師.
星星知我心 談古話今….. ……..觀星望斗 主講人: 陽光青春美少男.
反垃圾掩埋場相關報告 組長:文煊 組員:鄭侃文 李浩暐 胡育睿 李瑞耘 朱祐賢 林承宇.
"性"不"性"由你 性別平等之探討 北屯國小 張文陵.
組員: 洪暐翔、 賴峻毅 侯家豪、 賴琦穎 指導老師: 王惠鈴 老師
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第二节 微积分基本公式 1、问题的提出 2、积分上限函数及其导数 3、牛顿—莱布尼茨公式 4、小结.
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
台中市不動產經紀人職業工會 不動產經紀營業員 複訓班
第三章 多维随机变量及其分布 §2 边缘分布 边缘分布函数 边缘分布律 边缘概率密度.
实验数据处理方法 第二部分:Monte Carlo模拟
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
计算机数学基础 主讲老师: 邓辉文.
Introduction to AI and ML
动态规划(Dynamic Programming)
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
习题 一、概率论 1.已知随机事件A,B,C满足 在下列三种情况下,计算 (1)A,B,C相互独立 (2)A,B独立,A,C互不相容
数列.
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
2.3 线性乘同余方法 (Linear Congruential Method)
概 率 统 计 主讲教师 叶宏 山东大学数学院.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
5.2 常用统计分布 一、常见分布 二、概率分布的分位数 三、小结.
Monte Carlo模拟 第二章 均匀分布随机数的产生 2.1 随机数的定义和特性 2.2 随机数的产生 2.3 线形乘同余方法
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.1.2 空间向量的数量积运算 1.了解空间向量夹角的概念及表示方法. 2.掌握空间向量数量积的计算方法及应用.
第二章 类型、对象、运算符和表达式.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
概 率 统 计 主讲教师 叶宏 山东大学数学院.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第四节 随机变量函数的概率分布 X 是分布已知的随机变量,g ( · ) 是一个已知 的连续函数,如何求随机变量 Y =g(X ) 的分布?
第一部分:概率 产生随机样本:对分布采样 均匀分布 其他分布 伪随机数 很多统计软件包中都有此工具 如在Matlab中:rand
2.2矩阵的代数运算.
§5.2 抽样分布   确定统计量的分布——抽样分布,是数理统计的基本问题之一.采用求随机向量的函数的分布的方法可得到抽样分布.由于样本容量一般不止2或 3(甚至还可能是随机的),故计算往往很复杂,有时还需要特殊技巧或特殊工具.   由于正态总体是最常见的总体,故本节介绍的几个抽样分布均对正态总体而言.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
§2 方阵的特征值与特征向量.
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
《偏微分方程》第一章 绪论 第一章 绪论 1.1.
第二次课后作业答案 函数式编程和逻辑式编程
Presentation transcript:

Monte Carlo模拟 第二章 均匀分布随机数的产生 2.1 随机数的定义和特性 2.2 随机数的产生 2.3 线形乘同余方法 2019/4/14 均匀分布随机数的产生

2.1 随机数的定义和特性 什么是随机数? 单个的数字不是随机数 是指一个数列,其中的每一个体称为随机数,其值与数列中的其它数无关; 在一个均匀分布的随机数中,每一个体出现的概率是均等的; 例如:在[0,1]区间上均匀分布的随机数序列中,0.00001与0.5出现的机会均等 2019/4/14 均匀分布随机数的产生

2.1 随机数的定义和特性 随机数应具有的基本特性 考虑一个对高能粒子反应过程的模拟:需用随机数确定: 出射粒子的属性:能量、方向、… 粒子与介质的相互作用 对这一过程的模拟应满足以下要求(相空间产生过程): 出射粒子的属性应是互不相关的,即每一粒子的属性的确定独立于其它的粒子的属性的确定; 粒子的属性的分布应满足物理所要求的理论分布; 2019/4/14 均匀分布随机数的产生

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

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

2.1 随机数的定义和特性 有效性(Efficiency): 模拟结果可靠 模拟产生的样本容量大 所需的随机数的数量大 随机数的产生必须快速、有效,最好能够进行并行计算。 2019/4/14 均匀分布随机数的产生

Monte Carlo模拟 第二章 均匀分布随机数的产生 2.1 随机数的定义和特性 2.2 随机数的产生 2.3 线形乘同余方法 2019/4/14 均匀分布随机数的产生

2.2 随机数的产生 [0,1]区间上均匀分布的随机数是Monte Carlo模拟的基础: 服从任意分布的随机数序列可以用[0,1]区间均匀分布的随机数序列作适当的变换或舍选后求得 [0,1]均匀分布的随机数的产生方法: 利用一些具有内在的随机性的过程: 放射性衰变过程(radioactive decay); 热噪声(thermal noise); 宇宙线的到达时间(cosmic ray arrival); … 缺点:模拟的结果不可再现,使得模拟程序的找错困难 利用事先制订好的随机数表: 缺点:表的容量有限,不适合需要大量随机数的应用 2019/4/14 均匀分布随机数的产生

2.2 随机数的产生 利用数学递推公式在计算机中产生随机数 其中:T为某个函数,给定初值r1,r2,…,rk,可按上式确定rn+1, n=1,2,… 随机数序列. 算法:产生[0,M]区间上的整数In,然后利用公式rn=In/M返回[0,1]区间上的实数 优点: 占用计算机的内存少; 产生速度快; 可以重复前次的模拟结果,便于程序的找错; 2019/4/14 均匀分布随机数的产生

2.2 随机数的产生 缺点: 不满足随机数之间相互独立的要求:公式和初值确定后,序列就唯一地确定了; 不满足均匀性:计算机能表示的[0,1]区间内的数是有限的(由字长确定) 递推到一定次数后,出现周期性的重复现象 伪随机数(Pseudo-Random Number) 2019/4/14 均匀分布随机数的产生

Monte Carlo模拟 第二章 均匀分布随机数的产生 2.1 随机数的定义和特性 2.2 随机数的产生 2.3 线形乘同余方法 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 1948年由Lehmer提出的一种产生伪随机数的方法,是最常用的方法。 1、递推公式: 其中: I0: 初始值(种子seed) a: 乘法器 (multiplier) c: 增值(additive constant) m: 模数(modulus) mod:取模运算:(aIn+c)除以m后的余数 a, c和m皆为整数 产生整型的随机数序列,随机性来源于取模运算 如果c=0  乘同余法:速度更快,也可产生长的随机数序列 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 2、实型随机数序列: 3、特点: 1)最大容量为m: 2)独立性和均匀性取决于参数a和c的选择 例:a=c=I0=7, m=10  7,6,9,0,7,6,9,0,… 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 4、模数m的选择: m 应尽可能地大,因为序列的周期不可能大于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=16 1,6,15,12,13,2,11,8,9,14,7,4,5,10,3,0,1,6,15, 12,13,2,.. 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 RANDU随机数产生器: 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; } 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 存在严重的问题: Marsaglia效用,存在于所有乘同余方法的产生器 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->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); 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 float x = randu(); float y = randu(); float z = randu(); for(int i=0; i < 10000; i++) { float x = randu(); float y = randu(); float z = randu(); h1->Fill(x); h2->Fill(x,y); h3->Fill(x,y,z); } pad1->cd(); h1->Draw(); pad2->cd(); h2->Draw(); pad3->cd(); h3->Draw(); 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 如果取a=69069,将极大地改善结果 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 1968年,Marsaglia对这一问题进行了研究,认为: 任何的乘同余产生器都存在这一问题:在三维和三维以上的空间中,所产生的随机数总是集聚在一些超平面上 随机数序列是关联的 对于32位的计算机,在d-维空间中超平面的最大数目为 d=3 2953 d=4 566 d=6 120 d=10 41 改进措施:将递推公式修改为 特点:1)需要两个初始值(种子); 2)周期可大于m; 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 void SetSeed(unsigned long i0, unsigned long i1) { #include <math.h> 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; return (float) i1/float(m); } void SetSeed(unsigned long i0, unsigned long i1) { seed0 = i0; seed1 = i1; } 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 a=b=65539, seed0=9, seed1=11 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 如何获取[0,1]区间均匀分布的随机数产生器: 每一个Monte Carlo模拟程序软件包都有自带的产生器: Jetset(LUND Monte Carlo模拟系列):利用Marsaglia等所提出的算法,周期可达1043 函数用法:r=rlu(idummy) Geant3(探测器模拟程序,FORTRAN): 周期=1018 Call grndm(vec*,len) …. 利用CERN程序库: Y=rndm(x): 周期:5x108 Y=rn32(dummy):乘同余法,a=69069,i0=65539 Call ranmar(vec,len): 周期:1043 Call ranecu(vec,len,isq) 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 利用CLHEP中的随机数产生器软件包: CLHEP(Class Library for High Energy Physics)中的随机数产生器 http://hepg.sdu.edu.cn/~zhangxy/clhep/html/index.html 2019/4/14 均匀分布随机数的产生

2.3 线性乘同余方法 FORTRAN中使用随机数产生器应注意的问题: 在FORTRAN中,如果随机数产生器是带dummy变量的函数: 其中变量idum在函数中不使用,应注意以下问题: X=RAND(idum) FORTRAN编译器在对程序进行优化时: X=RAND(IDUM)+RAND(IDUM)  X=2.0*RAND(IDUM) DO I=1,10 X=RAND(IDUM) … END DO ….  解决办法: DO I=1,10 IDUM = IDUM +1 X=RAND(IDUM) … END DO 2019/4/14 均匀分布随机数的产生