基于Python实现蒙特卡洛法计算圆周率π
作者:python小爬菜
一、前置内容
蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。 [1]
1.1、了解random库
random库是使用随机数的Python标准库
伪随机数 :采用 梅森旋转算法 (伪)随机序列中元素
random库主要用于生成随机数
使用random库: import random
1.2、基本随机数函数
为什么要随机种子呢?
因为给了随机数种子, 调用的random()出的随机数是相同 , 那么对于一个随机数程序来说 , 可以做到复现的作用
1.3、扩展随机数函数
二、案例需求
看四分之一的部分 , 使用蒙特卡洛方法 , 模拟1000000次点随机落在这个四分之一上面 , 记录落在四分之一⚪内的,最后 4*( 四分之一落入圆内的随机点/四分之一部分面积), 算出来就是圆周率。
使用蒙特卡洛法计算圆周率
输入:无
输出:一般为3.14...
三、案例分析与解决过程
一、怎么使用蒙特卡洛方法计算圆周率?
答案:看四分之一的部分 , 使用蒙特卡洛方法 , 模拟1000000次点随机落在这个四分之一上面 , 记录落在四分之一⚪内的,最后 4*( 四分之一落入圆内的随机点/四分之一部分面积), 算出来就是圆周率。
二、怎么判断落入点在圆中?
答案:在单位⚪中 , 半径为1 , 那么随机点的x,y值 , (x平方+y平方之和的开方) 为随机点到圆心的距离 , 如果该距离小于1,那么判断该随机点在圆心中. 距离代码 pow(x2+y2 , 0.2)
四、完整代码
from random import random # 投入1000000个随机点 DARTS = 1000*1000; hits = 0.0 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))
五、检验与验收代码
六、复盘所学知识
1、随机数库random是python的标准库
2、常用随机函数random() , seed()
到此这篇关于基于Python实现蒙特卡洛法计算圆周率π的文章就介绍到这了,更多相关Python 计算圆周率π内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!