Python蒙德卡罗方法求PI

如下图所示,正方形边长为1,圆的圆心为O(0,0),请采用蒙特卡洛法求PI。

蒙特卡罗方法适合于根据概率求出图形的面积‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

根据两个图形的面积求出某一个未知数据量‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

请随机产生10000个点,判断是否落到一个半径为1的1/4个圆内,‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

通过概率与一个边长为1的正方形的面积比值‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

算出π的数值,要求输出强制保留两位小数

Python蒙德卡罗方法求PI_第1张图片

 

import random
m = 1000000#使用1000000个点进行计算
n = 0.0#计数落在圆中的点
for i in range(1,m+1):
    x,y = random.random(),random.random()
    dist = pow(x ** 2 + y ** 2,0.5)
    if dist <= 1.0:
        n = n+1
pi = 4*(n/m)
print("圆周率值是:{:.2f}".format(pi))

你可能感兴趣的:(python)