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

用“大数据”的方法求圆周率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为舟》所写)


版权声明:本文为qq_45668766原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。