蒙特.卡羅方法求解圓周率近似值原理及程式碼實現
阿新 • • 發佈:2018-11-25
-
原理
- 對於某些不能精確求解的問題,蒙特.卡羅方法是一種非常巧妙的尋找近似解的方法。
- 以求解圓周率的問題為例,假設有一個單位圓及其外切正方形,我們往正方形內扔飛鏢,當扔的次數足夠多以後,“落在圓內的次數/落在正方形內的次數”這個比值會無限接近“圓的面積/正方形的面積”這個比值,也就是圓周率的四分之一。模擬扔飛鏢的次數越多,圓周率的近似結果越精確。
πr2/4r2=S圓/S正方形 ===》 π/4=S圓/S正方形
-
程式碼實現
# -*- coding: utf-8 -*- # @Time : 2018/8/8 14:54 # @Author : ypc # @File : estimatePi # PI=4*圓/正方形 import random def estimatePi(times): # 落入正方形的次數 hists=0 # 落入圓的次數 for i in range(times): x=random.random()*2-1 # [0, 1)*2-1 y=random.random()*2 - 1 if x*x+y*y <=1: hists+=1 return 4.0*hists/times if __name__=="__main__": pi=estimatePi(10000000) print(pi)