比如指定圆域为 x^2+y^2<r
如何仅仅在这个区域内生成均匀随机数?要保证足够均匀~~
尝试过以下两种方法:1)先生成方形区域随机数再截取:(主干)
ran=rand(1000);ran2=(ran-0.5)*2*r;for i=1:1000 for j=1:1000
if r^2>ran2(i)^2+ran2(j)^2 plot(ran2(i),ran2(j),'r') hold on end endend
2)生成圆域内任意圆上的随机点:
a1=2*pi*rand(1,1000);r1=r*rand(1,1000);x=sin(a1).*r1;
y=cos(a1).*r1;a2=0:2*pi/100:2*pi;plot(r*sin(a2),r*cos(a2),'-b',x,y,'or')
结果为以下两张图,因为算法本身缺陷,无论1)2)都不够均匀,有高手有更好的方法吗?(满意答案追加)
本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!