1 / 9
文档名称:

蒲丰氏投针计算圆周率.doc

格式:doc   大小:22KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

蒲丰氏投针计算圆周率.doc

上传人:文库旗舰店 2019/9/23 文件大小:22 KB

下载得到文件列表

蒲丰氏投针计算圆周率.doc

文档介绍

文档介绍:用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-