利用蒙特卡洛(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()函数。

投入的点越多,计算值越精确。

结语

蒙特卡洛方法提供了一个利用计算机中随机数和随机试验来解决现实中无法用公式求解问题的思路,广泛应用在金融工程学、宏观经济学、计算物理学等领域。

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值