天天看點

python 用蒙特卡羅方法計算圓周率

蒙特卡洛方法

蒙特卡羅方法基于這樣的思想:假想你有一袋豆子,把豆子均勻地朝這個圖形上撒,然後數這個圖形之中有多少顆豆子,這個豆子的數目就是圖形的面積。當你的豆子越小,撒的越多的時候,結果就越精确。借助計算機程式可以生成大量均勻分布坐标點,然後統計出圖形内的點數,通過它們占總點數的比例和坐标點生成範圍的面積就可以求出圖形面積。
python 用蒙特卡羅方法計算圓周率

代碼

import time
import random
hits=0
pi=0
DARTS=10000*10000
start=time.perf_counter()
for i in range(DARTS):
    x,y=random.random(),random.random()
    dist=pow(x ** 2+y**2,0.5)
    if dist <= 1.0:
        hits+=1
pi=4*(hits/DARTS)
print("圓周率的值是{:.10f}".format(pi))
print("程式運作時間為{}s".format(time.perf_counter()-start))