有趣的“赌博算法”——蒙特卡洛方法粒子圆周率随机数原理

作者:杨博近代物理所辐射安全与防护室

本文将向大家介绍一种在科学研究中非常重要和有趣的计算方法——蒙特卡洛方法,这种方法在数学、物理学、化学、工程、经济学、环境动力学等多个领域都有广泛的应用。

到底什么是蒙特卡洛方法?我们可以先从它的名字开始了解,蒙特卡洛(MonteCarlo)是摩纳哥公国的一座城市,是世界著名的“赌城”。以“蒙特卡洛”来命名这种计算方法就是因为其本身便是一种概率算法,其核心思路是通过概率实验所求的概率来计算我们感兴趣的一个量。

概率算法的1.0版

为了更好地理解蒙特卡洛方法,我们先简单了解一下“蒲丰投针问题”,这个问题的提出被认为是蒙特卡洛方法的起源。

18世纪,法国数学家蒲丰提出了一种计算圆周率π的方法——随机投针法:假设我们有一个以平行且等距为a的木纹铺成的地板,随意抛一支长度为l(比木纹之间距离小)的针,通过针和其中一条木纹相交的概率p,即可计算圆周率π。计算公式为:,其中n是投针的总次数,m是针与平行直线交点的总数目。

图1蒲丰投针问题示意图

这个方法的原理可以通过概率学的推导计算来进行证明。由于投针掉落的位置与方向都是随机且独立的。我们假定落地后针的中心距最近的地板条纹的距离为X,那么X在[0,a/2]上均匀分布;针与地板条纹的夹角为Y,则Y在[0,π/2]之间均匀分布。当时,针与木纹相交,因此(X,Y)的概率密度函数和相交的概率P分别为:

相信大家都听懂了,下面我们可以……

好吧,这里还有一种虽然不够严谨、但易于理解的解释:

我们想象一个长度为πa的铁丝,被绕成了一个直径为a的圆环。那么无论我们怎么扔这个铁环,它与条纹的交点恒为两个,因此当投针n次后,相交的次数恒为2n。如果我们把铁丝拉直再扔,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点、3个交点、2个交点、1个交点,甚至于都不相交。由于圆圈和直杆的长度同为πa,根据机会均等的原理,投掷n次,直杆与平行线组交点的总数期望也是2n。同时还有一个规律,当投针次数n固定时,铁丝的长度l与交点总数m应为正比关系,即m=kl。考虑到l=πa时,m=2n,将代入前式可得:。

投针试验既然是依靠概率的算法,那么随着投针次数越来越多,计算求得的π值也会越来越接近于真实值。下表给出了一些比较出名的投针试验得到的圆周率估计值,可以看到在投掷数千次后,计算得到的圆周率与我们所熟知的π值的误差仍较大。

表1一些投针试验的计算结果

1995年,马修斯发表了他如何通过观察天空中亮星的分布计算圆周率。他的试验方法基于一个基本的原理:任意两个自然数互质的概率为。他从众多星星中选择100个亮星,将这些亮星两个分成一对,然后计算每对星之间的角距,得出一堆数据,然后检查这些数据的因子情况,从中计算出π值约为3.12772。

从上述两个例子来看,依靠重复的物理、观测等试验行为来获取随机性数据的方法往往很难得到令人满意的计算结果,这主要是受到了样本数量的限制。而早在魏晋时,我国的刘徽便通过割圆术求得了π的近似值3.1416。

“史诗级加强”X.0版

图2S.M.乌拉姆(左)和J·冯·诺伊曼(右)

计算机在进行蒙特卡洛模拟的过程中获取随机性最根本的方法是通过固定算法得到符合[0,1]均匀分布的“伪随机数”,它并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。

这里介绍另一种计算π值的蒙特卡洛方法——“撒豆法”。该方法假定有无数个豆子被均匀地撒在下图所示的正方形中,那么落在圆内的豆子数m与落在正方形内的豆子总数n的比值的期望应与它们面积的比值一致,即,这样就可以计算得到π的值。

图3“撒豆法”求解π值模型示意图

图4计算所用python代码及计算结果

计算机时代的蒙特卡洛模拟无疑具有超高的计算效率,且其计算效率随着计算机技术的飞速发展而不断提升。

核科学领域中的应用

蒙特卡洛方法在核科学领域中有着广泛的应用。核物理领域的基本参数(如反应截面、散射发射角度分布、能谱分布、衰变、衰减等)主要来自核物理实验及理论模型等,而蒙特卡洛模拟程序也在与核物理实验、理论模型等的相互参照、验证和迭代更新中不断发展至今。

如今在核物理领域有许多广泛使用的蒙特卡洛程序,如FLUKA、MCNP、PHITS、GEANT4等,这些蒙特卡洛程序对核物理学的发展至关重要,同时它们的运用过程也非常的有趣和巧妙。

具体以加速器辐射防护领域为例,粒子加速器产生的高速运动的微观粒子(一般每秒可达上亿个粒子)在与其他物质碰撞时,会通过核反应产生带电粒子、中子、γ射线等次级辐射,这些次级辐射又会继续与材料发生核反应,产生更多的次级辐射。如此周而复始,其反应过程非常复杂,无法通过人力模拟计算。而蒙特卡洛的方法,正好能够解决这个难题。

图5加速器产生电离辐射示意图

为了使加速器产生的强电离辐射降低到可接受的低水平,科研人员需要对次级粒子的输运过程进行仿真模拟,并根据模拟结果进行屏蔽阻挡设计。

接下来我们以一个简单模型为例,介绍蒙特卡洛方法应用于粒子输运模拟的基本思路。如下图所示,假定在一个二维的矩形屏蔽中,充满了物质B,左、上、下侧设置黑色隔板,右侧设置红色隔板。

图6模型示意图

假设粒子A具有以下特质:

粒子A在物质B中直线运动。但每直线前进1m,就会停止前进并与B发生反应,反应后继续直线前进。反应有三种可能:

①:A忽略与B的反应,继续按原方向前进1m,发生概率为1/3;

②:A与B发生正碰撞,向左偏转45°前进1m,发生概率为1/3;

③:A与B发生反碰撞,向右偏转45°前进1m,发生概率为1/3。

2.当A碰到黑色隔板后,会立刻消失;

3.当A碰到红色隔板后,会进入环境。

如果我们想知道当大量粒子A从上图中P位置向右水平射出,会有多少个粒子通过红色隔板进入环境,就可以利用蒙特卡洛程序进行大量模拟。

对单个事例,当粒子A从P点出发前进1米后,抽取伪随机数N为[0,1]的均匀分布,根据抽取的数字决定其下一步的运动轨迹:当0当1/3当2/3

下图给出了粒子A可能的两种运行轨迹,利用计算机程序可以高效地完成大量的粒子模拟,得到计算结果。根据统计学特性,计算的事例越多,结果也就越接近期望值。

图7粒子A可能的两种运行轨迹

在理解了上述示例的计算思路后,不难想象在辐射防护领域的研究中,只要我们知道了粒子在运行过程中每一步可能发生的反应类型及其概率等基本的核物理参数,就可以通过计算机程序实现各种不同情形的模拟计算。

比如FLUKA程序可被用于计算国内医用重离子加速器HIMM治疗室的辐射剂量率分布。如下图所示,可以看出碳离子集中损失的位置辐射剂量率最高,约为106μSv/h;而经过混凝土屏蔽后,屏蔽外的辐射剂量率衰减到了2.5μSv/h以下。

图8HIMM治疗室剂量率分布图。HIMM装置每秒钟能够产生1亿个最高能量为400MeV/u的碳离子束用于治疗,束流照射人体时几乎全部损失,从而产生各种次级辐射。

利用FLUKA程序,还可以开展更为复杂的辐射防护模拟研究,如更加多样的束流损失模式、更多的粒子种类与能量、更加复杂的建筑结构等。

图9各类加速器辐射剂量分布图示例

#参考文献:

[1]百度百科:蒲丰投针问题.

[2]李庆社.不断精确的圆周率[J].语数外学习:七年级,2012,000(0Z1):P.51-56.

[4]李阳等.10MeV同轴腔电子加速器辐射屏蔽设计[J].强激光与粒子束,doi:10.11884/HPLPB202335.220010.

THE END
1.学习笔记《趣学算法》OniisanRui学习笔记 --《趣学算法》 算法 前言 算法作为一门学问有两条几乎平行的线索。同一个数据对象上有不同的问题,就可用到不同的算法策略。不同数据对象上的问题也能用到相同的算法策略。 数据结构(数据对象):数、矩阵、集合、串、排列、图、表达式、分布等。https://www.cnblogs.com/oniisan/p/algorithm.html
2.趣学算法(第2版)本书是用轻松有趣的方法学习算法的入门指南。按照算法策略分为8章。第1章以算法之美、趣味故事引入算法,讲解算法复杂度的计算方法,以及爆炸性增量问题。2~7章讲解经典算法,包括贪心算法、分治算法、动态规划算法、回溯法、分支限界法、网络流算法。第8章讲解实际应用中https://www.ptpress.cn/bookDetails?id=UB7db2f4c12a6b7
3.趣学算法(36集带你高效学算法!)分类:算法与数据结构, 总时长: 10小时56分54秒 价格:87.2 详情 目录 第1集 算法复杂性计算方法 第2集 贪心算法秘籍 第3集最优装载问题 第4集会议安排问题 第6集二分搜索(1) 第5集分治算法秘籍 第7集合并排序 第8集快速排序 第9集 动态规划秘籍 https://www.epubit.com/courseDetails?id=PCC71fabb3e7425a
4.趣学算法(第2版)图书简介 《趣学算法(第2版)》从算法之美娓娓道来,没有高深的原理,也没有枯燥的公式。通过趣味故事引出算法问题,包含50多个实例及海量图解,结合学生提展开短评 打开App写短评 Marvin不慌2022-10-25 09:34:26 非常好的书,图解多,每个问题分析清楚,用图解显示求解过程,适合算法入门,题目阅读起来有趣很多,配套https://m.douban.com/book/subject/36126727/
5.趣学算法(陈小玉)应用技术相关资料下载趣学算法 (陈小玉) 本书内容按照算法策略分为7章。 第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。 第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯https://download.eeworld.com.cn/detail/%E6%8A%9B%E7%A0%96%E5%BC%95%E7%8E%89/630523
6.趣学算法.pdf陈小玉2017年版人民邮电出版社趣学算法.pdf-陈小玉-2017年版-人民邮电出版社 605页内容提供方:人民邮电出版社 大小:65.21 MB 字数:0 发布时间:2020-12-18发布于四川 浏览人气:1356 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元) 作者:陈小玉 出版社:人民邮电出版社 出版时间:2017-08-01https://max.book118.com/html/2020/1216/7036013003003032.shtm
7.趣学算法趣学算法 作者:陈小玉 ISBN:9787115459572 出版社:人民邮电出版社 出版年:2017 趣题学算法 作者:徐子珊 ISBN:9787115442871 出版社:人民邮电出版社 出版年:2017 趣学Python算法100例 作者:刘河飞 ISBN:9787111665984 出版社:机械工业出版社 出版年:2020 趣学Python编程 作者:布里格斯 ISBN:9787115335951 出版社:人民https://www.las.ac.cn/front/book/detail?id=2cb7ed901e50b8f45e12ff127500de96
8.趣学算法(第二版)读书笔记2趣学算法第二版pdf算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~ 文章目录 一棋盘的麦子 神奇的兔子数列 https://blog.csdn.net/qq_43406895/article/details/127366131
9.趣学算法pdf,mobi,epub,txt,百度云盘百度网盘免费下载电子书本书从算法之美娓娓道来,没有高深的原理,也没有枯燥的公式,通过趣味故事引出算法问题,包含50多个实例及完美图解,结合学生提问,分析算法本质,并给出代码实现的详细过程和运行结果。 本书的特色和价值: (1)实例丰富,通俗易懂 (2)完美图解,简单有趣 (3)深入浅出,透析本质 https://read678.com/JdBook/index/2582
10.趣学算法第2版前言剖析前言阅读计划 -> 《趣学算法-第2版》 前言剖析:阅读一本书,最首先要做的一件事是阅读前言。 如下的相关描述将会分条关键词的方式呈现,类似于进一步的提炼,此时的出发点有两个:第一,个人实践的视角;第二,因为是主观阅读表达,所以会添加自己方法论体系下的蒙版,也正是在这一层蒙版之上,我作为一个普通读者看到https://www.jianshu.com/p/ee3a5aac0a80
11.《趣学算法》(陈小玉)简介书评在线阅读算法圣经新版算法谜题算法帝国啊哈算法算法的乐趣算法图解枕边算法书文本上的算法算法小时代我的第一本算法书算法详解卷1趣学算法趣学数据结构Python数据结构与算法分析数据结构和算法枕边算法书新版第一本算法书新版数据结构与算法之美 人民邮电出版社当当自营 http://product.dangdang.com/25139435.html
12.《趣学Python算法100例》(刘河飞.闫凯峰)摘要书评试读机械工业出版社京东自营官方旗舰店 趣学Python算法100例 刘河飞.闫凯峰著 京东价 ¥ 促销 展开促销https://item.jd.com/12995156.html
13.数据结构与算法365天特训营因为没系统学过算法导致稍有逻辑的业务代码根本没有思路而严重限制了职业发展? 非科班半道出家? 在校期间因为水过了算法课而后悔? 面试考算法却怎么都过不了? 在校生想参加竞赛苦于没有人教学、指导、答疑? 都没关系,现在机会来了! 我们与《趣学算法》作者共同设计了数据结构与算法特训营! 都有哪些服务?直播+https://mici.jiqishidai.com/site/course_introduction?id=11
14.打开算法和数据结构的两扇门,这样程序的灵魂和骨架就都有了2、趣学算法 选择这本书的六大理由:(1)实例丰富,通俗易懂。从有趣的故事引入算法,从简单到复杂,使读者从实例中体会算法设计思想。实例讲解通俗易懂,让读者获得最大程度的启发,锻炼分析问题和解决问题的能力。 (2)完美图解,简单有趣。结合大量完美绘图,对算法进行分解剖析,使复杂难懂的问题变得简单有趣,给读者带https://cloud.tencent.com/developer/article/1590298
15.趣学数据结构(10大模块32项要点讲授)共36课时趣学数据结构(10大模块、32项要点讲授) 学习有效存储数据的方法 处理具有复杂关系的数据 提高算法效率 325人学习 初级36课时2020/09/06更新 独家 ¥129.00 销量榜 更多 1 ETL之PDI/Kettle培训实战教程-57个案例(数据迁移、抽取同步、转换加载) 5.0风哥https://edu.51cto.com/course/24539.html
16.一年级趣味数学教案(通用11篇)3、进一步体会加法的意义,感受数的运算与生活的密切联系,提高运用所学知识解决有关的简单实际问题的能力。 教学重难点 探索并掌握两位数加一位数的进位加法的计算方法,体会计算方法的多样性。 理解不同算法的`算理,尤其是满十进一的运算规则。 教学准备: https://www.fwsir.com/jiaoan/html/jiaoan_20230114102723_2243966.html
17.和Vicky一起学习Scratch系列之二十递归算法上一期,我们学习了一个有趣的数学概念 —— 斐波那契数列,并使用 Scratch 绘制了一条斐波那契螺旋线。 今天,我们将开启算法王国的大门,学习一种很有趣的算法 —— 递归,并使用这个算法创作一个小的作品。 再谈斐波那契数列 上一期中,我们了解了什么是斐波那契数列,这个数列的前几项是这样的: https://www.chuelebos.com/blog/scratch/learn_scratch_with_vicky-20_recursive_algorithm.html
18.资料算法图解:像小说一样有趣的算法入门书雷峰网导语:本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。 下载地址:https://www.yanxishe.com/resourceDetail/950?from=leiphonecolumn_res0630pm 内容简介 ··· 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地https://www.leiphone.com/category/ai/QMDY1TrdxcfZ77B5.html
19.“编”玩边学:Scratch趣味编程进阶——妙趣横生的数学和算法epub出版社: 清华大学出版社 ISBN:9787302495604 版次:1 商品编码:12354790 包装:平装 开本:16开 出版时间:2018-04-01 用纸:胶版纸 页数:161 字数:246000 “编”玩边学:Scratch趣味编程进阶——妙趣横生的数学和算法 epub pdf mobi txt 电子书 下载 2024 类似图书 点击查看全场最低价 https://book.tinynews.org/books/12354790
20.程序员书籍推荐:趣学算法+趣学数据结构趣学算法 第1章 算法之美 1 1.1 打开算法之门 2 1.2 妙不可言—算法复杂性 2 1.3 美不胜收—魔鬼序列 9 1.4 灵魂之交—马克思手稿中的数学题 16 1.5 算法学习瓶颈 21 1.6 你怕什么 22 第2章 贪心算法 24 2.1 人之初,性本贪 25 2.1.1 贪心本质 25 2.1.2 贪亦有道 26 2.1.3https://www.nowcoder.com/discuss/532864
21.孩子逻辑混乱是数学不好的根本原因30本书帮孩子建立数理逻辑本书揭开趣味游戏、艺术设计和日常生活中的数学密码,通过新颖话题和精美图示展现算术与几何中隐藏的妙趣,从简单的数学原理走入算法的精彩世界,展现算法破解数学谜题的无穷威力。本书适合所有数学爱好者阅读。 适合10—13岁孩子的经典书籍 13、中国儿童数学百科全书 http://parents.youthmba.com/archives/39300
22.人教版三年级数学教案(精选20篇)2、经历探索两位数口算方法的过程,体会算法的多样化。 3、增强学生讲所学知识应用于生活的意识及创新意识。 4、培养学生的口算能力、解决问题的能力。教学重点: 学会两位数减两位数的口算方法。 教学难点: 培养学生的计算能力以及解决问题的能力。 教学步骤: https://www.unjs.com/jiaoan/shuxue/20230216082019_6453700.html
23.幂次学院:数据结构与算法365天刷题特训营本套课程由幂次学院出品:数据结构与算法365天刷题特训营,官方售价7999元,本套课程由《趣学算法》作者陈小玉老师主讲。如果你想提升自己的核心竞争力!《趣学算法》作者365天带你系统学习数据结构与算法。拒绝做码农,提升核心竞争力,升职加薪轻松过面试!学习编程真正的核心!本套课程共31章完整视频+相关课件,目前更新https://www.fjha.net/4281.html