栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

monte carlo计算圆周率_python蒙特卡洛算法求圆周率?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

monte carlo计算圆周率_python蒙特卡洛算法求圆周率?

蒙特卡罗法计算圆周率

今天遇到一个很有意思的方法求解圆周率,给大家分享一下!

理论基础

蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。

基本步骤

随机向如图所示的单位正方形和圆结构,抛洒大量“飞镖”点,计算每个点到圆心的距离从而判断该点在圆内或者圆外,用圆内的点数除以总点数就是π/4值。随机点数量越大,越充分覆盖整个图形,计算得到的π值越精确。实际上,这个方法的思想是利用离散点值表示图形的面积,通过面积比例来求解π值。

代码
from random import random
from math import sqrt
from time import process_time
DARTS = 10000#通过不断增加拋点,值越接近
hits = 0.0
for i in range(1, DARTS+1):
    x, y = random(), random()
    dist = sqrt(x ** 2 + y ** 2)
    if dist <= 1.0:
        hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi值是{:.5f}".format(pi))
print("运行时间是: {:.5f}s".format(process_time()))
运行结果

通过不断增加DARTS的值,π的值越精确

DARTS = 10000

 DARTS = 100000

DARTS = 1000000

DARTS = 10000000

 DARTS = 100000000

 DARTS = 1000000000

 大家有时间可以自己试一下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号