蒙塔卡洛方法:四分之一圓 / 正方形
利用 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...