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

2021-10-24 19:27:56 字數 1552 閱讀 2138

蒙塔卡洛方法:四分之一圓 / 正方形

利用 random() 函式生成隨機點

for …in 迴圈;

pow(x ** 2 + y ** 2,0.5) 小於 圓半徑1的計數(點數越多越精確)

自己嘗試寫的**:

import random

defjudge

(a,b):if

pow(a **

2+ b **2,

0.5)

<=

1.0:

return

true

else

:return

false

points,n =

1000

*1000,0

for i in

range

(points)

: x,y = random.random(

),random.random(

)if judge(x,y)

: n +=

1print

("圓周率的估算:{}"

.format(4

*(n / points)))

結果:圓周率的估算:

3.141376

資料中的**:

from random import random   """ 上下對比,利用 from random import random 可以減少 上面的 	 

random.random() 的累贅 """

from time import perf_counter

darts =

1000

*1000

hits =

0.0start = perf_counter(

)for i in

range(1

,darts+1)

:""" 對於 range(1,darts+1) 我覺得和 range(darts)區別不大,

因為下面的**並沒有使用到i這個變數 """

x,y = random(

),random(

) dist =

pow(x **

2+ y **2,

0.5)

if dist <=

1.0:

hits +=

1pi =4*

(hits / darts)

print

("圓周率的數值為:{}"

.format

(pi)

)print

("執行時間是:"

.format

(perf_counter(

)- start)

)結果:圓周率的數值為:3.1407

執行時間是:0.83409

蒙特卡羅方法

概念 蒙特卡羅方法又稱統計模擬法 隨機抽樣技術 是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯絡,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法地概率統計特徵,故借用賭城蒙特卡羅命名。...

蒙特卡羅方法

蒙特卡羅方法 monte carlo method 蒙特卡羅方法又稱統計模擬法 隨機抽樣技術,是一種隨機模擬方法。以概率和統計理論方法為基礎的一種計算方法,是使用隨機數 或更常見的偽隨機數 來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯絡,用電子計算機實現統計模擬或抽樣,以獲得問題的近...

蒙特卡羅方法

mcmc是 markov chain monte carlo 縮寫,中文馬爾科夫鏈蒙特卡羅。最早的蒙特卡羅方法是為了求各或積分問題,比如 theta int a bf x dx 使用蒙特卡羅方法求得積分的近似值。在 a,b 區間上隨機取樣乙個近似點 x 0 然後用 f x 0 代表區間上所有 f x...