gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第5章/li5_2.m
clear all; s=0:0.01:2*pi; x=sin(s); y=cos(s); %计算半径为1的圆周上的点,以便作出圆周观察 m=0; %在圆内在落点计数器 x1=2*rand(999,1)-1; %产生均匀分布于[-1 1]直接的两个独立随机数x1,y1 y1=2*rand(999,1)-1; N=999; %设置试验次数 for n=1:N %循环进行重复试验并统计 p1=x1(1:n); q1=y1(1:n); if(x1(n)*x1(n)+y1(n)*y1(n))<1 %计算落点到坐标原点的距离,差别落点是否在圆内 m=m+1; %如果落入圆中,计数器加1 end plot(p1,q1,'.',x,y,'-k',[-1 -1 1 1 -1],[-1 1 1 -1 -1],'-k'); axis equal; %坐标纵横比例相同 axis([-2 2 -2 2]); %固定坐标范围 text(-1,-1.2,['试验总次数n=',num2str(n)]); %显示试验结果 text(-1,-1.4,['落入圆中数m=',num2str(m)]); text(-1,-1.6,['近似圆面积Sc=',num2str(m/n*4)]); set(gcf,'DoubleBuffer','on'); drawnow; end tic %启动计时器 n=10000; %每次随机落点10000个 for k=1:1000 %重复试验1000次 x1=2*rand(n,1)-1; y1=2*rand(n,1)-1; m(k)=sum((x1.*x1+y1.*y1)<1); %求落入圆中的点数和 end Sc=mean(m).*4./n %计算并显示结果 time=toc %显示耗时