用蒙特卡罗法求圆周率(Python)

mac2024-11-03  14

用“大数据”的方法求圆周率Pi: 思路:计算机随机从0到1的数组成坐标为(x,y)的坐标,假设这里有一个以原点(0,0)为圆心,半径为1的,只看第一象限那个四分之一的圆,此时其面积为Pi/4,这个圆被一个第一象限中边长为1的正方形包住,面积为1。计算机随机生成的点(x,y),判断该点是否在四分之一圆内。随机生成n个点,统计落到圆内的点与n的比值,这个比值与面积之比相同,即:落到圆内的点数:n=四分之一圆的面积:正方形的面积,所以Pi=落到圆内的点数/(n*4)。随机取的点越多越精确。 以下为程序,要利用一个随机产生的函数random(),先载入random这个库,用import random语句实现:

import random def pi(times): sum=0 for i in range(times): x=random.random() y=random.random() d2=x*x+y*y if d2<=1:sum+=1 return(sum/times*4) times=100000000 x=pi(times) print("Pi=%.8f" % (x))

(此文为看沙行勉教授的《计算机科学导论——以Python为舟》所写)

最新回复(0)