利用蒙特卡洛(Monte Carlo)方法计算π值
圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法。
国际公认的π值计算采用蒙特卡洛方法。
蒙特卡洛方法
蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。当所求解的问题是某种事件出现的概率,或某随机变量的期望值时,可以通过某种“试验”方法求解。
简单说,蒙特卡洛是利用随机试验求解问题的方法。
π值的计算
构造一个单位正方形和一个单位圆的1/4,往整个区域内随机投入点,根据点到原点的距离判断点是落在1/4的圆内还是在圆外,从而根据落在两个不同区域的点的数目,求出两个区域的比值。如此一来,就可以求出1/4单位圆的面积,从而求出圆周率π。
下面是用Python的实现:
# pi.py
from random import random
from math import sqrt
from time import clock
DARTS = 1200
hits = 0
clock()
for i in range(1, DARTS):x, y = random(), random();dist = sqrt(x**2 + y**2)if dist <= 1.0:hits = hits + 1
pi = 4 * (hits/DARTS)
print('Pi的值是 %s' % pi)
print('程序的运行时间是 %-5.5ss' % clock())
代码中用到了random和math库的random()函数和sqrt()函数,为了统计时间,还用到了time库的clock()函数。
投入的点越多,计算值越精确。
结语
蒙特卡洛方法提供了一个利用计算机中随机数和随机试验来解决现实中无法用公式求解问题的思路,广泛应用在金融工程学、宏观经济学、计算物理学等领域。
利用蒙特卡洛(Monte Carlo)方法计算π值相关推荐
- 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]
圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...
- 蒙特卡洛(Monte Carlo)方法的介绍和应用
蒙特卡洛(Monte Carlo)方法的介绍和应用 蒙特卡洛(Monte Carlo)方法 在渲染中,我们经常听到术语"蒙特卡洛"(通常缩写为MC).但是这是什么意思?实际上,它所 ...
- 蒙特卡洛(Monte Carlo)方法简介
蒙特卡洛(Monte Carlo)方法的本质 蒙特卡洛(Monte Carlo)方法,即蒙特卡洛采样,是一种根据某已知分布的概率密度函数f(x),产生服从此分布的样本X的方法. 蒙特卡洛采样有很多种, ...
- 蒙特卡罗(Monte Carlo)方法
蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...
- Monte Carlo方法的基本思路
Monte Carlo方法的基本思路 (1)针对实际问题建立一个简单且便于实现的概率统计模型,使所求的解恰好是所建模型的概率分布或其某个数字特征,比如是某个事件的概率,或者是该模型的期望值. (2)对 ...
- Matlab用向量误差修正VECM模型蒙特卡洛Monte Carlo预测债券利率时间序列和MMSE 预测...
原文链接:http://tecdat.cn/?p=27246 此示例说明如何从 VEC( q ) 模型生成 Monte Carlo 预测.该示例将生成的预测与最小均方误差 (MMSE) 预测和来自V ...
- Monte Carlo方法
又称为计算机随机模拟算法 理论支撑:概率=频率 在最近看的论文<A Discussion on Solving Partial Differential Equations using Neur ...
- 怎样用python计算π的值_IV.python初探日记:python实现蒙特卡洛方法计算π值
早上中级微观经济学课上复习泰勒展开和麦克劳林展开,顺带讲到了用蒙特卡洛方法实现计算π值,于是下午着手用python尝试着实现了一下,并用matplotlib输出了一部分数据. 完整的代码在文末,本文适 ...
- 15分钟入门蒙特卡洛 Monte Carlo
来自 | 知乎 作者 | 薛定豆 链接 | https://zhuanlan.zhihu.com/p/223042372 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系后台删 ...
最新文章
- OpenCV 图像采样 插值 几何变换
- 自由自在休闲食品实现奶茶妹的创业梦
- oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110
- 如何设置Win11系统右键刷新
- 去重+排序板子(set+map)
- easyswoole事务mysql_easyswoole ORM 事务操作管理
- ajax请求数据 ztree_ajax 异步获取数据填充到表格显示(ajax) 文档(Options API) DataTables中文网...
- 语义分割之OCR的评判标准
- java判断一个字符串是否为空,isEmpty和isBlank的区别
- JavaWeb学习之Servlet(三)----Servlet的映射匹配问题、线程安全问题
- BZOJ【1609】 麻烦的聚餐
- Ie和firefox的Javascript区别
- 隆重推荐:公民税权手册
- linux java sqlldr_sqlldr用法详解
- 微信小程序SEO优化
- Excel密码保护怎么解密码
- 服务机器人工程师(ROS)要求汇总220331
- 微信公众号二维码生成
- 部门平均工资mysql_按部门统计各工资级别的人数、平均工资。
- LeGO-LOAM资料整理
热门文章
- 软考系统架构设计师论文真题汇总(2015-2017)
- 千年私服服务器用户名创建,千年私服详细安装技术文章
- UG/NX二次开发 单位化向量 UF_VEC3_unitize
- 入网认证遇到的安全受控机制的问题---之Android 5.1.1 AppOps与严格模式
- js 实现经纬度转 城市-区县-街道
- LINUX-SHELL基础
- 必须收藏!这13个优秀React JS框架,没用过就很离谱!
- Excel利用公式向导快速设置成绩的评级系统!
- 《C++ Primer》第14章 14.3节习题答案
- android内存扩展格式,一文看懂:如何为你的安卓手机选择合适的存储卡