在新學期中的繼續學習離散數學中,接觸到蒙特卡洛演算法,解決了我以前幾何圖形求面積不好求的問題,看到十分的開心。
蒙特卡洛演算法就是模擬出指定某隨機事件發生的概率,比如我們想要判斷一下兩枚骰子在同時擲出後,同時出現 6 的頻率就可以通過增加實驗執行的次數,來確保該頻率越來越接近該事件發生的概率。也就是實驗次數越多,所得到的結果才越精確。
最開始,我接觸到的就是圓周率 π 的計算,通過我們熟知的在乙個單位圓加乙個該圓的外切正方形這個圖案,然後通過往這個平面灑出豆子,計算豆子的總個數和而掉落在圓內的豆子數量,間接地可以近似出該圓的面積: 正方形面積 = 圓內的豆子數 :總的豆子數,並且隨著次數增加,面積越精確。
if(x * x + y * y <= r*r)//在單位圓內
num++;
其中2 * rand()/double(rand_max);
將範圍擴到(0,2)之間,加上負一,就是(-1,1)的座標點了。正方形的面積 2 * 2 = 4;
**實現(最近在自學c++,以後嘗試用c++).
#include
using namespace std;
#include
#include
#define r 1
intmain()
double pi =
(double
)num/count*4;
cout<
return0;
}
那麼看了以上這個簡要的**,相信有一定的了解了。那麼在實現這個演算法的時候,我們應該注意三點:
該問題是否是具有隨機性,若具有隨機性們就可直接模擬該過程;若不是隨機過程問題,那麼考慮是否可以轉化為隨機問題。
產生隨機數。利用srand((unsigned)time(null));
獲取當前 時間並產生rand()
,隨機數。當然這種方式產生的隨機數是偽隨機數,因為這些隨機數都是基於同樣的演算法產生的隨機數,在某些時候會產生不正確的影響。
確定乙個隨機變數,作為所要求的問題的解。意思就是得到我們所求問題的近似解。
蒙特卡洛演算法
從今天開始要研究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呢?乙個辦法是在正方形中...
蒙特卡洛理解
蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...