如题所述
第1个回答 2013-06-03
利用蒙特卡洛算法近似求圆周率PI
#include<iostream>
#include<cmath>
#include<ctime>
#define COUNT 500000 //循环取样次数
using namespace std;
bool InCircle(double x,double y)//是否在1/4圆范围之内
...{
if((x*x+y*y)<=1)return true;
return false;
}
void main()
...{
double x,y;
int num=0;
int i;
srand((unsigned)time(NULL));
for(i=0;i<COUNT;i++)
...{
x=rand()*1.0/RAND_MAX;
y=rand()*1.0/RAND_MAX;
if(InCircle(x,y)) num++;
}
cout<<"PI:"<<(num*4.0)/COUNT<<endl;
}
#include<iostream>
#include<cmath>
#include<ctime>
#define COUNT 500000 //循环取样次数
using namespace std;
bool InCircle(double x,double y)//是否在1/4圆范围之内
...{
if((x*x+y*y)<=1)return true;
return false;
}
void main()
...{
double x,y;
int num=0;
int i;
srand((unsigned)time(NULL));
for(i=0;i<COUNT;i++)
...{
x=rand()*1.0/RAND_MAX;
y=rand()*1.0/RAND_MAX;
if(InCircle(x,y)) num++;
}
cout<<"PI:"<<(num*4.0)/COUNT<<endl;
}