Problem
Compute PI.
Solution
Calculate an approximate value for pi by using the Monte Carlo method.
/*
============================================================================
Author : James Chen
Email : a.james.chen@gmail.com
Copyright : James Chen
Description : Compute PI using Monte Carlo
Created Data :
Last Modified : 12-06-2013
============================================================================
*/
#include <iostream>
#include <iomanip>
using namespace std;
#define RADIUS 15000
double ComputePI(long iterTime)
{
int cnt = 0;
for(int i = 0; i < iterTime; ++i){
int x = rand() % RADIUS;
int y = rand() % RADIUS;
if(sqrt(x * x + y * y) <= RADIUS){
cnt ++;
}
}
return double(cnt) / iterTime * 4;
}
int main(int argc, char* argv[])
{
srand(4);
long iterTimes = 100000L;
for(int i = 1; i < 4; i++){
iterTimes *= 10;
cout << "Iteration times: " << setw(12) << iterTimes;
cout << " PI : " << ComputePI( iterTimes) << endl;
}
return 0;
}
Output
Iteration times: 1000000 PI : 3.27879
Iteration times: 10000000 PI : 3.27679
Iteration times: 100000000 PI : 3.27722
Press any key to continue .
. .