设有宽度为1的正方形,其中有一半径为0.5的圆内接这个正方形,随机生成一定数量的点,落在圆内的点的数量和落在圆外点的数量的比值k即为π/4,我们只需要求出k的值,即可根据π=k*4即可求得圆周率。
参考资料:/blog//07/monte-carlo-method.html
代码如下:
% kkk=[];% for i=1:10clcdota=1000;x=rand(1,dota);y=rand(1,dota);plot(x,y)dis=[];for i=1:length(x);k=sqrt((x(i)-0.5)^2+(y(i)-0.5)^2);dis=[dis,k];endcount=0;for i=1:length(dis)if dis(i)<0.5count=count+1;plot(x(i),y(i),'color','red','marker','o','linestyle','none')hold onelseplot(x(i),y(i),'color','blue','marker','o','linestyle','none')endendqw=count/length(x);disp('随机点个数:')disp(dota)disp('圆周率:')disp(qw*4)% kkk=[];% kkk=[kkk,qw*4];% end% disp(kkk)% jugg=((abs(pi-kkk))./pi)*100;% plot(jugg)% ylabel('相对误差百分比(%)')