文档介绍:用C语言计算蒲丰氏投针计算圆周率#include<>#include<>main(){intn1=0,n,i;doublerand_num1,rand_num2;printf("inputthen:");printf("%d");for(i=0;i<n;i++){rand_num1=(double)time(0)*rand();while(rand_num1>1)rand_num1-=2;rand_num2=(double)time(0)*rand();while(rand_num2>1)rand_num2-=2;if(rand_num1*rand_num1+rand_num2*rand_num2<1)n1++;}printf("π=%f\n",4*n1/n);/*n1/n=π/4距离小于1就是在圆里,取点范围在(-1,-1)到(1,1)的正方形里*/}MATLAB计算蒲丰氏投针计算圆周率(蒙特卡罗方法)cleara=1;l=;counter=0;n=10000000;%投掷次数x=unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离phi=unifrnd(0,pi,1,n);%产生n个(0,pi)之间均匀分布的随机数,这里pi是投针到最近的平行线的角度fori=1:nifx(i)<l*sin(phi(i))/2%只要x小于l*sin(phi(i))/2,则相交counter=counter+1;endendfrequency=counter/n;%计算相交的频率,即相交次数比总次数Pi=2*l/(a*frequency)%从相交的频率总求的pi%运行结果>>testPi=。如下#include<iostream>#include<vector>#include<>#include<>usingnamespacestd;/////////////////////////////////////////////therandfunction//////////////////////////////////////////doubleRand2(int&idum){constunsignedlongIM1=2147483563,IM2=2147483399;constunsignedlongIA1=40014,IA2=40692,IQ1=53668,IQ2=52774;constunsignedlongIR1=12211,IR2=3791,NTAB=32,IMM1=IM1-1;constunsignedlongNDIV=1+IMM1/NTAB;constdoubleEPS=-16,AM=,RNMX=(-EPS);staticintiy=0,idum2=314159265;staticvector<int>iv(NTAB);intj,k;doubletemp;if(idum<=0){idum=(idum==0?1:-idum);idum2=idum;for(j=NTAB+7;j>=0;j--){k=idum/IQ1;idum=IA1*(idum-