蒙特卡罗算法详见维基百科
上代码
#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<ctime>
#include<cmath>
using namespace std;
void moni(long int n)
{
int i;
double a,b,pi,arean=0,areaw=0;
for(i=0;i<n;i++)
{
a=b=0.001;
srand(int(time(0)));
a=a*(rand()%1000);
b=b*(rand()%1000);
if(1>(pow(a,2)+pow(b,2)))
arean+=1;
else
areaw+=1;
}
pi=(arean*1.000000/((areaw+arean)*1.000000))*4/1.000000;
cout<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;
}
int main()
{
int n;
cin>>n;
moni(n);
}