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

求程序!!... 求程序!! 展开
 我来答
dukinkin
2015-07-28 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:934万
展开全部

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;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式