虽然在python的math库中存在着圆周率的表示,但是在实际生活中又有谁可以完整的背出圆周率呢,圆周率又是怎样被计算出来的呢?
首先数学家们发现了圆周率的近似方程如下:

而这段代码自然可以用计算机中的python高效的表现出来,正如示例一

pi = 0
N = 100
for k in range(N):pi += 1/pow(16,k)*(\4/(8*k+1) - 2/(8*k+4)-\1/(8*k+5) - 1/(8*k+6))
print('圆周率值是:{}'.format(pi))

自然获得结果:

圆周率值是:3.141592653589793

而在工程上采用的是一种近似的方法,即蒙特·卡罗方法。

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

而这种随机数的算法正是适合python的random库。

通过一个四分之一的圆和边长等于圆半径的正方形,随机在该图形上撒下‘小点’,最终通过圆内的’小点‘与圆外的’小点‘进行简单运算得出pi的取值。
源代码经过改进得到如下示例二

#蒙特卡罗方法
from random import random   #梅森旋转算法
from time import perf_counter
DARTS = 1000*1000
hits = 0.0
start = perf_counter()
for i in range(1,DARTS+1):x,y = random(),random()dist = pow(x**2+y**2,0.5)if dist <= 1.0:hits = hits + 1
pi = 4 * (hits/DARTS)
print('圆周率值是:{}'.format(pi))
print('运行时间是:{:.5f}s'.format(perf_counter()-start))

从而得到结果:

圆周率值是:3.143688
运行时间是:1.44904s

这样得到的结果也较为近似。

python语言程序设计——蒙特·卡罗方法求圆周率相关推荐

  1. Python---利用蒙特.卡罗方法计算圆周率近似值

    利用蒙特.卡罗方法计算圆周率近似值 什么是蒙特.卡罗方法? 答:蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 正方形内部有一个相切的圆,它们的面积之比是π ...

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

    对于某些不能精确求解的问题,蒙特.卡罗方法是一种非常巧妙的寻找近似解的方法. 以求解圆周率的问题为例,假设有一个单位圆及其外切正方形,我们往正方形内扔飞镖,当扔的次数足够多以后,"落在圆内的 ...

  3. python编程题13-蒙特·卡罗方法计算圆周率

    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用, 其中就包括圆周率近似值的计算问题.假设有一块边长为 2 的正方形木板,上面画一个单位 圆,然后随意往木板上扔飞镖,落点坐 ...

  4. 【C语言编程】使用近似值方法求圆周率π的值

    编写程序利用公式计算下面公式的近似值,直到括号中最后一项的绝对值小于10-6为止. 题目解析 典型的循环题目,使用while或者do while循环最为简单. 符号正.负.正.负变化,可以用一个变量开 ...

  5. 《Python语言程序设计》实验二

    <Python语言程序设计>实验二 一.实验项目:Python语言序列数据结构2 1.字典运算及应用 2.集合运算及应用 3.可迭代对象应用 4.理解并运用内置函数enumerate(), ...

  6. python 程序流程控制结构-【笔记】《python语言程序设计》——程序的控制结构...

    一.前言 学习就是一个不断的自下而上,自上而下的过程. 前段时间,学着用python实现网站的数据爬取,隐约get到python的一些语法和用法,感觉就是语法不难,关键在于解决问题的思维. 这是需求驱 ...

  7. 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)

    4.1 算法 [1]计算机程序可视为数据结构和算法的集成,这种集成体现为以下两方面的内容:数据是程序实现的基础:算法要依靠程序来完成功能. [2]算法的特点:有穷性:确定性:零个或多个输入:一个或多个 ...

  8. 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学

    教育信息化 数码世界 P .203 基于培养思维能力的 Python 语言程序设计教学 周蓉   东莞市商业学校 摘要 :Python 语言有着简洁,高效和生态的三大特点,在中职学校引入计算机程序设计 ...

  9. 蒙特 卡罗方法matlab,蒙特·卡罗方法中的数学之美,你一定不想错过

    原标题:蒙特·卡罗方法中的数学之美,你一定不想错过 有方教育--我们致力于为中学生提供学界和业界前沿的学术科研教育内容,帮助学生参加海外科研项目,在提升申请竞争力的同时,获得领跑优势. 一.概述 蒙特 ...

最新文章

  1. Python的subprocess子进程和管道进行交互
  2. ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
  3. Android --- 订单编号怎样不重复?一秒钟如果有n个人同时下单怎么解决?凌晨12点限量抢购1000件商品,直到抢完为止订单编号怎么处理?
  4. 使用GetDIBts/SetDIBits高速逐点处理 from http://blog.sina.com.cn/s/blog_552ad2090100e3eu.html...
  5. MFC中使用自定义消息 .
  6. (四) Docker 常用帮助命令
  7. C语言摇骰子比大小,三个骰子出点规律|玩3个骰子猜大小必赢技巧
  8. 知道创宇创始人赵伟荣登“中国产业创新百人榜”
  9. 快排C语言三种实现方法(大同小异)
  10. Markdown符号:整除、不整除、恰整除、不恰整除
  11. 物质社会会变成巨大的神经,这颗星球将会成一颗会思考的大脑
  12. IDEA软件常见的使用方法
  13. 个税继续教育证书有哪些 计算机,个税继续教育包括函授吗 个人所得税的继续教育主要包括哪些...
  14. Qt中添加背景图片的方法
  15. 利用NURBS曲线进行点云曲面拟合算法
  16. 苏州公交线路查询api-苏州公交状态实时跟踪
  17. Camera2架构学习(二)——CameraServer和CameraProvider的启动初始化
  18. 继电器代替调速旋钮实现开关+调速(两固定速度+stm32)
  19. 4*4矩阵转换成二维平面坐标
  20. r5 5560U怎么样 相当于什么水平

热门文章

  1. yocto(一)——yocto介绍
  2. 水仙花数素数质因数分解的C语言实现
  3. python 网格策略_Python版简单网格策略
  4. 情感分析与观点挖掘第五章笔记(上)/基于方面的情感分析/SentimentAnalysis-and-OpinionMining by Bing Liu
  5. xp电脑自动锁定计算机,WinXP系统如何设置电脑自动关机?
  6. WIN7 64位系统安装CodeWarrior 6.3及BDM驱动
  7. VirtualBox 6.0.10
  8. Lua计算kronecker 积、Khatri-Rao积、Hadamard积、普通矩阵乘积
  9. Mac 媒体格式转换软件Permute
  10. openwrt修改ip地址