蒙特·卡羅方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性算法。為象征性地表明這一方法的概率統計特征,故借用賭城蒙特卡羅命名。
對于求圓周率PI的問題,可以模擬在一個長寬均為1的正方形里面均勻的隨機落入點,然后根據落在半徑為1的圓中的點的個數來求得Pi的大小,點的數目越多,結果越準確。
~~~
#include <iostream>
#include <time.h>
using namespace std;
#define MAX_NUM 5000000
int g_nInCircle = 0;
int main()
{
double nX;
double nY;
double dDis = 0;
double Pi = 0;
srand(time(NULL));
for (long int i=0; i< MAX_NUM; i++)
{
nX = (double)rand()/RAND_MAX; //可能生成都最大隨機數
nY = (double)rand()/RAND_MAX;
dDis = pow(nX, 2) + pow(nY, 2);
if (dDis < 1.0)
{
g_nInCircle++;
}
}
Pi =(double) g_nInCircle / MAX_NUM * 4;
cout<<"Pi = "<<Pi<<endl;
system("pause");
}
~~~
