蒙特.卡罗方法求解圆周率近似值原理与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
----------相关阅读----------
两行Python代码实现电影打分与推荐
Python按位异或运算符^应用案例一则:查找只出现一次的数字
三种Fibonacci数列第n项计算方法及其优劣分析
Python快速计算Fibonacci数列中第n项的方法
Python版组合数计算方法优化思路和源码
Python组合列表中多个整数得到最小整数(一个算法的巧妙实现)
Python编写人机对战小游戏(抓小狐狸)
Python寻找给定序列中相差最小的两个数字
几行Python代码模拟轮盘抽奖游戏
Python使用递归法对整数进行因数分解
Python模拟大整数乘法的小学竖式计算过程
基于非递归算法的汉诺塔游戏之Python实现
Python计算有向图节点的入度和出度
Python使用广度优先和深度优先两种方法遍历目录树
Python使用筛选法计算小于给定数字的所有素数
哈夫曼编码原理与Python实现代码(附手动推导过程原稿真迹)
Python版堆排序算法
Python版归并排序算法(附Python程序__name__属性用法演示视频)
Python版快速排序算法(附pip安装扩展库演示视频)
Python模拟汉诺塔问题移动盘子的过程
Python版双链表结构与有关操作
侏儒排序算法原理与Python实现
Python实现单链表
Python版基于递归的冒泡排序算法
Python版快速排序算法
Python版选择排序算法
Python版冒泡法排序算法
Python计算整数阶乘的几种方法比较
鸡兔同笼问题新解与Python实现
Pythonic:递归、回溯等5种方法生成不重复数字整数
一维序列卷积之Python实现
祝所有程序员1024节日快乐
学会提问,你就成功了一大半!
盘点那些让人上火的提问方式(论如何让交流更高效)
----------喜大普奔----------
1、继《Python程序设计基础》(2017年9月第5次印刷)、《Python程序设计(第2版)》(2017年9月第4次印刷)、《Python可以这样学》(2017年7月第3次印刷)系列图书之后,董付国老师新书《Python程序设计开发宝典》(2017年10月第2次印刷)。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:
https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3
2、董付国老师新作《中学生可以这样学Python》已于2017年10月正式出版,很快会在各大书城全面上架。
3、董付国老师6本Python系列图书阅读指南
4、董老师免费视频地址: http://pan.baidu.com/s/1c14WYn2 密码: 9xwr
5、董老师收费视频课:
CSDN学院:http://edu.csdn.net/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0
龙果学院:http://www.roncoo.com/course/list.html?courseName=Python%E5%8F%AF%E4%BB%A5%E8%BF%99%E6%A0%B7%E5%AD%A6
蒙特.卡罗方法求解圆周率近似值原理与Python实现相关推荐
- Python---利用蒙特.卡罗方法计算圆周率近似值
利用蒙特.卡罗方法计算圆周率近似值 什么是蒙特.卡罗方法? 答:蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 正方形内部有一个相切的圆,它们的面积之比是π ...
- python语言程序设计——蒙特·卡罗方法求圆周率
虽然在python的math库中存在着圆周率的表示,但是在实际生活中又有谁可以完整的背出圆周率呢,圆周率又是怎样被计算出来的呢? 首先数学家们发现了圆周率的近似方程如下: 而这段代码自然可以用计算机中 ...
- Python+numpy实现蒙特卡罗方法估计圆周率近似值
问题描述:使用蒙特卡罗方法估计圆周率近似值,具体描述详见以前发的文章蒙特.卡罗方法求解圆周率近似值原理与Python实现 技术要点:Python扩展库numpy中的模块random可以批量生成特定范围 ...
- “好串”求解算法优化原理与Python实现
佩服国防科大刘万伟老师的数学功底与编码功底,感谢刘老师无私分享! =====正文======= 题目要求:称一个 0-1 串是"好串",如果它的任何子串不在其中连续出现三次以上.编 ...
- Python用蒙特卡罗方法计算圆周率近似值
实验目的: 1.理解蒙特Ÿ卡罗方法原理. 2.理解for循环本质与工作原理. 3.了解random模块中常用函数. 实验内容: 蒙特Ÿ卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的 ...
- 蒲丰投针问题和蒙特·卡罗方法
蒲丰投针问题和蒙特·卡罗方法 1.蒲丰投针问题 法国数学家蒲丰在18世纪提出的一种计算圆周率的方法.具体方法是首先在白纸上画满间距相等的平行直线,然后取出一把小针,每个小针的长度都小于等于平行直线的间 ...
- 蒙特 卡罗方法matlab,蒙特·卡罗方法中的数学之美,你一定不想错过
原标题:蒙特·卡罗方法中的数学之美,你一定不想错过 有方教育--我们致力于为中学生提供学界和业界前沿的学术科研教育内容,帮助学生参加海外科研项目,在提升申请竞争力的同时,获得领跑优势. 一.概述 蒙特 ...
- python编程题13-蒙特·卡罗方法计算圆周率
蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用, 其中就包括圆周率近似值的计算问题.假设有一块边长为 2 的正方形木板,上面画一个单位 圆,然后随意往木板上扔飞镖,落点坐 ...
- python计算圆周率_python模拟蒙特·卡罗法计算圆周率
蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ...
最新文章
- Linux之进程管理
- Towards a topological-geometrical theory of group equivariant non-expansive operators for data analy
- 简化Redis数据访问代码RedisTemplate
- uilabel 自行撑开高度_UILabel文本高度计算的那些事儿
- postman测试带权限接口_接口测试工具:postman
- 关于英特尔物联网你不可不知的10个最新动向
- 刨根问底 | 红遍全网的SD-WAN,到底是个啥?
- Mac删除自带输入法
- Icon图标格式(用于生成*.ico图标)
- Axure 灯箱效果
- LeetCode 714. 买卖股票的最佳时机含手续费(动态规划)
- AD20 指定层PCB图纸1:1打印步骤笔记
- Skywalking概述
- 阿里云服务器安装postgresql
- 晶圆在低温探针台中的安装方式——Cyanoacrylate粘合剂
- 今年应避免的网站营销错误
- 基础篇:Linux 常用命令总结
- 震源子波matlab,VSP震源子波应用
- Tomcat优化设置:IDEA实现不用重启Tomcat就能自动更新资源
- 审视自己再出发,在职读研从人民大学与加拿大女王大学金融硕士项目起航
热门文章
- k6前级效果器怎么用_P18:调制类效果器的那些事儿(Modulation)
- openlayer 图层上下_OpenLayers 3 的图层体系结构
- php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
- java gui 监听组合键,Java之GUI按钮监听事件ActionListener
- java 获取apk的包名_java从apk文件里获取包名、版本号
- 计算机rank函数怎么用积分排名,excelrank函数积分排名
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业计划管理系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的会员管理系统
- dede列表分页php,织梦用dede:sql实现列表页分页教程
- 洛谷4014最大/小费用最大流