##什么是蒙特卡洛方法
蒙特·卡羅方法(Monte Carlo method)只泼,也稱統(tǒng)計(jì)模擬方法剖笙,是二十世紀(jì)四十年代中期由于科學(xué)技術(shù)的發(fā)展和電子計(jì)算機(jī)的發(fā)明,而被提出的一種以概率統(tǒng)計(jì)理論為指導(dǎo)的一類非常重要的數(shù)值計(jì)算方法请唱。是指使用隨機(jī)數(shù)(或更常見的偽隨機(jī)數(shù))來解決很多計(jì)算問題的方法弥咪。與它對應(yīng)的是確定性算法。蒙特·卡羅方法在金融工程學(xué)十绑,宏觀經(jīng)濟(jì)學(xué)聚至,計(jì)算物理學(xué)(如粒子輸運(yùn)計(jì)算、量子熱力學(xué)計(jì)算本橙、空氣動(dòng)力學(xué)計(jì)算)等領(lǐng)域應(yīng)用廣泛扳躬。[1]
蒙特卡洛方法計(jì)算圓周率
我們可以使用蒙特卡洛方法估算圓周率,具體思路如下:
思考一個(gè)1*1的正方形甚亭,它的內(nèi)接圓和正方形的面積之比為pi/4贷币。我們在正方形的面積范圍內(nèi)產(chǎn)生大量(n個(gè))隨機(jī)的點(diǎn),再統(tǒng)計(jì)這些點(diǎn)在圓的范圍內(nèi)的數(shù)量m亏狰。則pi/4 = m/n役纹,由此可估算pi的值。代碼如下:
---
import random
def calc_pi():
? ? n = 100000000
? ? x_min, x_max = 0.0, 1.0
? ? y_min, y_max = 0.0, 1.0
? ? count = 0
? ? for i in range(0, n):
? ? ? ? x = random.uniform(x_min, x_max)
? ? ? ? y = random.uniform(y_min, y_max)
? ? ? ? if x*x + y*y <= 1:
? ? ? ? ? ? count += 1
? ? pi = count / float(n)*4
? ? return pi
print(calc_pi())
#3.14153148
---
作者:Koap
鏈接:http://www.reibang.com/p/59d63ab9c695
來源:簡書
著作權(quán)歸作者所有骚揍。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)字管,非商業(yè)轉(zhuǎn)載請注明出處啰挪。