前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蒙特.卡罗方法求解圆周率近似值原理与Python实现

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

作者头像
Python小屋屋主
发布2018-04-16 16:05:14
1.3K0
发布2018-04-16 16:05:14
举报
文章被收录于专栏:Python小屋Python小屋

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

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

实现代码为:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档