erlang蒙特卡洛方法求Pi

2021-07-24 14:05:08 字數 948 閱讀 7622

兩個引數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蒙特卡洛模擬。以 馬爾可夫...