matlab生成单位球内均匀分布的1行10000列随机数,并画散点图;

求程序!!

第1个回答  2015-07-28

ang=rand(1,10000)*2*pi;%随机10000个0~2pi均匀分布的角度

r=sqrt(rand(1,10000));%随机10000个0~1均分布数的开平方做幅度

x=r.*cos(ang);%计算实部

y=r.*sin(ang);%计算虚部

data=x+1i*y;%得到单位圆里均匀分布的复数

plot(x,y,'.');%根据实部虚部画图

xlabel('实部');

ylabel('虚部');

axis image;


追问

我想求的是单位球内的随机数。。。不过还是感谢你的帮助。

追答

球内的只要改一下就好,基本思想都是将直角坐标转为极坐标或求坐标
求坐标的体积元是 r^2*sinθdrdθdφ
所以r的分布函数是r^2的,积分也就是r^3,用0~1均匀分布的开三次方获得
而θ的分布函数是sinθ,积分也就是-cosθ,用-1~1均匀分布的反余弦获得

N=10000;
ang1=rand(1,N)*2*pi;%随机10000个0~2pi均匀分布的角度1
ang2=acos(rand(1,N)*2-1);%随机10000个-1~1均匀分布的反余弦获得角度2
r=rand(1,N).^(1/3);%随机10000个0~1均分布数的开立方做幅度
x=r.*cos(ang1).*sin(ang2);%计算x
y=r.*sin(ang1).*sin(ang2);%计算y
z=r.*cos(ang2);%计算z
plot3(x,y,z,'.');
axis square;

本回答被提问者和网友采纳