蒙特·卡羅方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法,是指使用亂數或偽亂數來解決很多計算問題的方法,與它對應的是確定性演算法, 蒙特卡洛是摩納哥的一座城市,注意是摩納哥不是有卡薩布蘭卡的摩洛哥,蒙特卡洛以賭博聞名,這大概也是其名稱被用來作為一種概率統計演算法的名稱的緣由把,畢竟都與概率現象有關,
由于很多情況下計算實際值會消耗大量時間,因此蒙特卡洛方法的思想是通過隨即采樣來對實際值進行估算,并且可以得到良好的估算結果,它的一個簡單示例是用蒙特卡洛方法估算PI值,如下圖:
下圖中,是一個內切于正方形的單位圓,如果按照概率計算,隨機生成的坐標點落在圓形的概率與落在整個正房形區域內的面積比為:

我們編程實作:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int tries = 0;
int success = 0;
for(tries = 0; tries < 80000000; tries ++)
{
float x=rand()/(RAND_MAX+1.0);
float y=rand()/(RAND_MAX+1.0);
if((x*x + y*y) <= 1)
{
success ++;
}
}
double pi = 4 * (double)success / (double)tries;
printf("pi = %f\n", pi);
return 0;
}

總結:
蒙特卡洛方法是通過隨機才陽來將一個復雜問題化簡,這里用蒙特卡洛方法估算PI值,畫了一個正方形和它的內切圓,然后在正方形中隨機撒下了一些點,看在圓內的點有多少,在正方形內的點又有多少,由二者的比值即可求得PI的估計值,
結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401687.html
標籤:其他
