资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Monte Carlo模拟,第三章 从概率分布函数的抽样(Sampling from Probability Distribution Functions),3.5 舍选抽样法 (acceptance-rejection sampling),3.5 舍选抽样法(acceptance-rejection sampling),直接抽样法的困难:,许多随机变量的累积分布函数无法用解析函数给出; 有些随机变量的累积分布函数的反函数不存在或难以求出; 即使反函数存在,但计算困难,舍选抽样法(von Neumann):,抽取随机变量x的一个随机序列xi, i=1,2, 按一定的舍选规则从中选出一个子序列,使其满足给定的概率分布.,Monte Carlo模拟,第三章 从概率分布函数的抽样(Sampling from Probability Distribution Functions),3.5 舍选抽样法 (acceptance-rejection sampling),简单舍选抽样法 改进的舍选抽样法 典型的例子,1. 简单舍选抽样法,a,b,x,f(x),c,几何解释:,在二维图上,随机选取位于矩形abef内的点x,y; 选取位于曲线f(x)下的那些点,则这些点将服从概率密度为f(x)的分布,e,f,1. 简单舍选抽样法,证明:,按舍选抽样法抽出的随机数d的概率:,a,b,x,f(x),c,e,f,x和y的概率密度函数分别为,联合概率密度函数为,即d的概率函数为f(x),d,1. 简单舍选抽样法,抽样效率:,对舍选抽样法:欲产生m个随机变量x的值需产生n对(x,y),显然,m n,如果选出某特定分布的一个随机数平均地需要n个随机数r1 U0, 1,则抽样效率定义为,Monte Carlo模拟,第三章 从概率分布函数的抽样(Sampling from Probability Distribution Functions),3.5 舍选抽样法 (acceptance-rejection sampling),简单舍选抽样法 改进的舍选抽样法 典型的例子,2. 改进的舍选抽样法,改进的舍选抽样法,2. 改进的舍选抽样法,抽样方法:,1. 产生两个随机数,产生分布为g(x) 的随机数x ,xa,b; 产生0, Cgg(x) 区间上均匀分布的随机数y,y= Cgg (x) , U0,1.,2. 接收或舍弃取样值 x.,如果 y f(x),舍弃,返回到1,重复上述过程; 否则,接受;,2. 改进的舍选抽样法,几何解释:,在二维图上,随机选取位于曲线Cgg(x)下的点x,y; 选取位于曲线f(x)下的那些点,则这些点将服从概率密度为f(x)的分布,x,2. 改进的舍选抽样法,证明:,按舍选抽样法抽出的随机数d的概率:,d,x和y的概率密度函数分别为,联合概率密度函数为,即d的概率函数为f(x),x,2. 改进的舍选抽样法,抽样效率:,x,常数Cg的选取,常数Cg应尽可能地小,因为抽样效率与Cg成反比; Cg=maxf(x)/g(x), x a,b,Monte Carlo模拟,第三章 从概率分布函数的抽样(Sampling from Probability Distribution Functions),3.5 舍选抽样法 (acceptance-rejection sampling),简单舍选抽样法 改进的舍选抽样法 典型的例子,3. 典型的例子,例1:标准正态分布的抽样,x-a,a,无法用直接抽样法,累积分布函数无解析表达式,Breit-wigner or Cauchy分布,3. 典型的例子,由g(x)抽取x 直接抽样法,抽取u,计算f(x), 如果u= f(x), 接受x,3. 典型的例子,float gaussian_reject(double a) const float c = 1.52; while(true) float eta = randac(); float x = tan(eta * 2.0 * atan(a)+atan(-a); float q = c * 1/3.1415926*1.0/(1+x*x); float ksi = randac(); float u = ksi*q; float p = 1/sqrt(2*3.1415926)*exp(-x*x/2.0); if(u = p) break; return x; ,3. 典型的例子,void test() SetSeed(9,11); c1 = new TCanvas(c1,Histogram Drawing Options,200,10,700,900); c1-Divide(1,2); TH1F * h1 = new TH1F(h1,h1,100,-5.0,5.0); for(int i=0; i Fill(x); c1-cd(2);h1-Draw(); ,3. 典型的例子,3. 典型的例子,3. 典型的例子,例2:利用舍选法产生随机数C=cos, S=sin,其中为0, 2区间内均匀分布的随机数,方法1:先产生0, 2间均匀分布的随机数: = 2 r, rU0,1, 然后直接计算C和S 因需要计算三角函数,故此方法运算速度慢,方法2:利用舍选法可避免三角函数运算,令A和B为单位圆内直角三角形的两个边,则有,3. 典型的例子,因此,只要产生单位圆内的随机坐标A和B,就可用代数运算求出C和S,算法为,产生两个0,1区间上均匀分布的随机数u1和u2; 令v1=2u1-1, v2=u2,则v1U-1,1,v2U0,1; 计算r2=v12+v22, 如果r2 1,转到1,重新产生; 令A=v1, B=v2, 计算C和S,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号