蒙特卡洛python求pi近似,怎么用python做蒙特卡洛模拟
昏睡的红酒方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。昏睡的红酒方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
主持人方法通过随机模拟来解决问题,先想象一个圆心为(0.5,0.5),半径为0.5的圆,面积为/4,设为S1,还有一个外切的正方形,面积为1,设为S2,现向正方形内随机掷点,假设掷点总数为n,其中落入圆内部的点的总数为m,那么落入圆内的概率为男/女。由几何概型,点落入圆内部的概率为S1/S2,那么由男/女=S1/S2即可推出=4M/N。
首先模拟生成在正方形区域的随机点
导入numpy作为NP导入matplotlib。py绘图为pltimport matplotlib。补丁作为补丁def get _ random _ points(N):NP。随机的。seed(42)random _ points=NP。随机的。rand(N,2)返回random_points这里的随机种子(42)是一个随机数种子,接下来定义一个估计圆周率的函数,分割为圆内和圆外两部分
# 计算圆周率的值,并将圆内外的点分开,方便做图def cal _ pi(random _ points):inCircle _ points=[]#圆内部点outCircle_points=[] #外部点(以及边上的点)对于random _ points中的点:x=point[0]y=point[1]if(x-0.5)* * 2(y-0.5)* * 2 0.25:inCircle _ points。append([x,y])else:outCircle_points。append([x,y])ratio=len(内圆点数)/len(随机点数)pi=4 * ratio返回pi,内圆点数,外圆点数最后计算出估计值并进行可视化
def plot _ data(random _ points):pi _ estimation,inCircle_points,out circle _ points=cal _ pi(random _ points)print(估计的圆周率值为:,pi _ estimation)图1=PLT。图()#绘制圆的轮廓ax1=fig1.add_subplot(111,aspect= equal )ax1。添加修补程序(修补程序.圆((0.5,0.5),0.5,fill=False,lw=2)) #绘制圆内外的点ax1。plot(np . array(inCircle _ points)[:0],NP。array(inCircle _ points)[:1], go ,alpha=0.3,标记大小=0.5)ax1。plot(np . array(out circle _ points)[:0),NP。array(out circle _ points)[:1], ro ,alpha=0.3,markersize=0.5) plt.axis([0,1,0,0,1]) #座标轴范围约束PLT。title( $ \ pi \ \ approx str(pi _ estimation) $ )PLT。显示()选取普通为30000进行测试
if _ _ name _ _== _ _ main _ _ :N=30000 random _ points=get _ random _ points(N)plot _ data(random _ points)运行结果及效果图如下
估计的圆周率值为: 3.1470666666666665
——参考百度百科、 《数据分析入门》
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。