基本思想: 利用圓與其外接正方形面積之比為pi/4的關係,通過產生大量均勻分布的二維點,計算落在單位圓和單位正方形的數量之比再乘以4便得到pi的近似值。樣本點越多,計算出的資料將會越接近真識的pi(前提時樣本是「真正的」隨機分布)。
蒙特卡羅(monte carlo)演算法計算圓周率的主要思想:給定邊長為r的正方形,畫其內切圓,然後在正方形內隨機打點,設點落在圓內的概為p,則根據概率學原理: p = 圓面積 / 正方形面積 = pi * r * r / 2r * 2r = pi / 4。即 pi=4p。這樣,當隨機打點足夠多時,統計出來的概率就非常接近於pi的四分之一了。
#include #includeusing
namespace
std;
intmain()
if (i%(max_times/100)==0
)
}double pi = 4.0*in /max_times;
cout
<< "
\npi=
"<< pi
}
實現了一下,感覺時間用的有點長。。。
參考:
erlang蒙特卡洛方法求Pi
兩個引數r,n分別代表範圍和試驗次數。思想是正方形內接圓,往正方形上扔飛鏢,落在圓內計數加一,最終拿計數和總試驗次數作比。r 1m,n 1m 結果3.143856,3.140464,3.141572,取平均為3.141964 如下 module ex7 import math,sqrt 1,pow ...
蒙特卡洛演算法
從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...
蒙特卡洛演算法
問題描述 在數值積分法中,利用求單位圓的1 4的面積來求得pi 4從而得到pi。單位圓的1 4面積是乙個扇形,它是邊長為1單位正方形的一部分。只要能求出扇形面積s1在正方形面積s中佔的比例k s1 s就立即能得到s1,從而得到pi的值。怎樣求出扇形面積在正方形面積中佔的比例k呢?乙個辦法是在正方形中...