博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蒙特卡罗(Monte Carlo)方法计算圆周率
阅读量:3929 次
发布时间:2019-05-23

本文共 1534 字,大约阅读时间需要 5 分钟。

蒙特卡罗方法

当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

工作过程

蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

蒙特卡罗方法解题过程的三个主要步骤:

(1)构造或描述概率过程

对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过 程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为性质的问题。

(2)实现从已知概率分布抽样

构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个是(0,1)上的均匀分布(或称矩形分布)。就是具有这种均匀分布的随机变量。序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生,但价格昂贵,不能重复,使用不便。另一种方法是用产生。这样产生的序列,与真正的序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种表明,它与真正的,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现的基本工具。

(3)建立各种估计量

一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种,相当于对的结果进行考察和登记,从中得到问题的解。

 

 

徐不可说:蒙特卡罗方法是典型运用计算思维来求解问题的方法。当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。与生硬运用数学公式计算不同,蒙特卡罗方法能够更加精准模拟问题求解。

以下为蒙特卡罗方法求解圆周率的python代码:

#撒点方法 形成单位正方形from random import randomfrom time import perf_counter #计算机当前时间darts=1000*1000*10hits=0.0start=perf_counter()for i in range(1,darts+1):	x,y=random(),random()	dist=pow(x**2+y**2,0.5)	if  dist <= 1.0:		hits=hits+1pi=4*(hits/darts)print("运行时间是:{:.5f}s".format(perf_counter()-start))print("圆周率的值是:{}".format(pi))input()

以下为基于已知公式

用python实现数学公式求解的代码:

#圆周率的计算pi=0n=100for k in range(n):	pi+=1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6))print("圆周率为:{}".format(pi))input()

 

你可能感兴趣的文章
什么是统计学中的 Standard Error ( SE )?
查看>>
统计学中的标准差(SD)和 平均值的标准误差(SEM)的区别
查看>>
什么是抽样平均误差?
查看>>
什么是抽样误差?
查看>>
[统计学笔记] 统计学中的相关关系和三大相关系数
查看>>
[统计学笔记] 必须要掌握的统计学基本概念和术语(更新中)
查看>>
[统计学笔记] 方差分析表的解读
查看>>
[统计学笔记] (十三)指数分析(1)
查看>>
[统计学笔记] 参数估计和假设检验计算题精讲
查看>>
[数据挖掘与预测分析] 单变量统计分析思考问题
查看>>
[统计学笔记] (十三)指数分析(2)
查看>>
Data Science 到底是什么?
查看>>
机器学习(Machine Learning)和传统的数据统计分析(Data Statistics)有什么区别?
查看>>
统计学、统计学习和统计推断之间的关系
查看>>
数据挖掘(Data Mining)和数据分析(Data Analysis)的对比
查看>>
[敏捷开发实践] 敏捷团队如何应对Product Owner不断变化的需求
查看>>
[敏捷开发实践] 为什么开发人员不愿意写单元测试?
查看>>
[敏捷开发实践] 端到端测试你了解多少?
查看>>
API 测试你所需要知道的……
查看>>
[哪些年玩 Spring Boot 时踩过的坑] application.yml 文件格式错误引发的错误信息
查看>>