蒙特卡羅演算法的典型應用之一為求圓周率pi問題。
思想:乙個半徑r=
1 的圓,其面積為:s=
pi∗r
2=pi
/4
乙個邊長r=
1 的正方形,其面積為:s=
r2=1
那麼建立乙個座標系,如果均勻的向正方形內撒點,那麼落入圓心在正方形中心,半徑為1的圓內的點數與全部點數的比例應該為pi
/4,根據概率統計的規律,只要撒的點足夠多,那麼便會得到圓周率pi
的非常近似的值。
使用蒙特卡羅演算法計算圓周率有下面兩個關鍵點:
均勻撒點:在c語言中可用隨機函式來實現,產生[0
,1) 之間隨機的座標值(x
,y) ;
區域判斷:位於圓內的點的特性是其與圓心的距離小於等於1,這樣可用x2
+y2<=
1 來判斷;
概率演算法是依照概率統計的思路來求解問題的演算法,它往往不能得到問題的精確解。
執行的基本過程如下:
將問題轉換為相應的幾何圖形s,s的面積是容易計算的,問題的結果往往對應幾何圖形某一部分s1的面積;
然後,向幾何圖形中隨機撒點;
統計幾何圖形s和s1中的點數,根據面積關係得結果;
判斷精度,滿足要求則輸出,不滿足則返回(2);
概率演算法大致分為以下4類:
數值概率演算法
蒙特卡羅(monte carlo)演算法
拉斯維加斯(las vegas)演算法
舍伍德(sherwood)演算法
#include
#include
#include
using
namespace
std;
double montepi(int n)
//for
pi = 4.0 * sum / n;
return pi;
}int main()
system("pause");
return
0;}
Python 蒙特卡羅計算圓周率
蒙特卡羅方法於20世紀40年代美國在第二次世界大戰中研製原子彈的 曼哈頓計畫 計畫的成員s.m.烏拉姆和j.馮 諾伊曼首先提出。數學家馮 諾伊曼用馳名世界的賭城 摩納哥的monte carlo 來命名這種方法,為它蒙上了一層神秘色彩。在這之前,蒙特卡羅方法就已經存在。1777年,法國數學家布豐 ge...
求圓周率pi的怪異程式 祖沖之圓周率演算法絕技之迷
據說華羅庚曾講過乙個故事,說 有個教書先生喜歡喝酒,一天,他叫學生背圓周率,自己卻提壺酒到山上廟裡找老和尚喝酒去了。有個聰明的學生把圓周率編了個 打油詩 山巔一寺一壺酒,爾樂苦煞吾,把酒吃 酒殺爾殺不死,樂爾樂 其實是 3.1415926535897932384626 的諧音。先生一回來,學生居然背...
蒙特卡洛演算法 投點求圓周率Pi
蒙特卡洛演算法是以概率和統計的理論 方法為基礎的一種計算方法,將所求解的問題同一定的概率模型相聯絡 用電子計算機實現統計模擬和抽樣,以獲得問題的近似解,故又稱統計模擬法或統計實驗法。蒙特卡洛演算法 蒙特卡洛是美國摩納哥的乙個城市,以賭博聞名於世。蒙特卡洛演算法借用這一城市的名稱是為了象徵性的表明該方...