兩個引數r,n分別代表範圍和試驗次數。思想是正方形內接圓,往正方形上扔飛鏢,落在圓內計數加一,最終拿計數和總試驗次數作比。
r=1m,n=1m 結果3.143856,3.140464,3.141572,取平均為3.141964
**如下
-module
(ex7)
.-import
(math,[sqrt/1,pow/2])
.-import
(rand,[uniform/1])
.-compile
([export_all])
.index
(0,[h|_t])->
h;index
(n,[_h|t])->
index(n-1,t).
distance
(a,b)->
sqrt(pow(index(0,a)-index(0,b),2)+pow(index(1,a)-index(1,b),2)).
count
(n,r)->
count(n-1,r,distance([0,0],[uniform(r),uniform(r)])).
count
(0,r,d)
when d
1;count
(0,_r,_d)->
0;count
(n,r,d)
when d
1+count(n-1,r,distance([0,0],[uniform(r),uniform(r)]));
count
(n,r,_cad)->
count(n-1,r,distance([0,0],[uniform(r),uniform(r)])).
calpi
(r,n)->
io:format("~w~n",[4*count(n,r)/n]).
蒙特卡洛方法
蒙特卡洛方法 monte carlo method,也有翻譯成 蒙特卡羅方法 是以概率和統計的理論 方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際...
蒙特卡洛方法
這個演算法是用來求解積分和一些運算的,主要就是通過概率模擬的方法,比如對於 或者積分 import random def calpai n 1000000 r 1.0 a,b 0.0,0.0 x neg,x pos a r,a r y neg,y pos b r,b r count 0 for i ...
python蒙特卡洛求定積分 蒙特卡洛定積分(一)
一 蒙特卡洛模擬法分類 蒙特卡洛法模擬法從其應用方面來劃分,可以分成以下三種形式 1 直接蒙特卡洛模擬。採用隨機數學咧來模擬複雜隨機過程的效應。2 蒙特卡洛定積分 間接蒙特卡洛模擬 利用隨機數序列計算積分的方法。積分維數越高,該方法的積分效率就越高。3 metropolis蒙特卡洛模擬。以 馬爾可夫...