您当前的位置:首页 > 计算机 > 编程开发 > Python

蒙特.卡罗方法求解圆周率近似值原理与Python实现

时间:12-27来源:作者:点击数:

对于某些不能精确求解的问题,蒙特.卡罗方法是一种非常巧妙的寻找近似解的方法。

以求解圆周率的问题为例,假设有一个单位圆及其外切正方形,我们往正方形内扔飞镖,当扔的次数足够多以后,“落在圆内的次数/落在正方形内的次数”这个比值会无限接近“圆的面积/正方形的面积”这个比值,也就是圆周率的四分之一。模拟扔飞镖的次数越多,圆周率的近似结果越精确。

实现代码为:

from random import random

def estimatePI(times):

    hits = 0

    for i in range(times):

        x = random()*2 - 1

        y = random()*2 - 1

        if x*x + y*y <= 1:

            hits += 1

    return 4.0 * hits/times

print(estimatePI(10000))

print(estimatePI(1000000))

print(estimatePI(100000000))

print(estimatePI(1000000000))

运行结果为:

3.1396

3.1419

3.141688

3.141591436

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门