初學Python 例項六 蒙特卡洛方法求圓周率

2021-09-10 03:44:40 字數 1010 閱讀 7884

蒙特·卡羅方法(monte carlo method),也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性演算法。蒙特·卡羅方法在金融工程學,巨集觀經濟學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。

下面我們使用蒙特卡洛方法計算圓周率:

具體是,首先在乙個x,y座標系內,劃分乙個實際大小的正方形,然後假定向這個正方形裡面灑黃豆,然後我們根據這個正方形的某乙個點為圓心,畫乙個四分之一圓,進而利用數學方法,計算落在這個扇形裡面的黃豆數量,和正方形裡面的黃豆數量,然後根據數學關係即可計算出圓周率的值。自然地,這個正方形越大,往裡面投的黃豆數量越多,越接近於實際的圓周率.

我們用計算思維來理解這件事,灑黃豆的行為我們可以借助於隨機數來實現,然後我們給出**:

#例項六:蒙特卡羅圓周率計算

from random import random

from time import perf_counter

darts = 1000 * 1000 #虛擬乙個1000*1000的正方形

hit = 0.0

start = perf_counter()

for i in range(1,darts+1):

x,y = random(),random()

dist = pow(x**2+y**2,0.5)#計算點x,y到圓心的距離

if dist <= 1.0:

hit = hit +1

pi = 4 * (hit/darts)

print("圓周率是:{}".format(pi))

end = perf_counter() - start

print("執行時間是:s".format(end))

這裡,我們假定這個正方形的規格是1000*1000,我們可以讓這個面積更大,這樣我們計算出的圓周率也就越準確

python蒙特卡洛求定積分 蒙特卡洛定積分(一)

一 蒙特卡洛模擬法分類 蒙特卡洛法模擬法從其應用方面來劃分,可以分成以下三種形式 1 直接蒙特卡洛模擬。採用隨機數學咧來模擬複雜隨機過程的效應。2 蒙特卡洛定積分 間接蒙特卡洛模擬 利用隨機數序列計算積分的方法。積分維數越高,該方法的積分效率就越高。3 metropolis蒙特卡洛模擬。以 馬爾可夫...

蒙特卡洛理解

蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...

蒙特卡洛演算法

從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...