紧急!用matlab产生6个0到1间的随机数,且这6个数的和为1,怎么编程啊???

用matlab产生6个0到1间的随机数,且这6个数的和为1,怎么编程啊???

第1个回答  2012-11-05
我的答案是最好的!!!
rand('state',0)
Weights=rand(1000,6);
Total=sum(Weights,2);
Total=Total(:,ones(6,1));
Weights=Weights./Total
这是产生一千组满足你条件的数,你要一组就把那1000改成1就OK!!
第2个回答  2009-09-13
clc;
a=zeros(6,1);
while a(6)==0
a(1:5)=rand(5,1);
s=sum(a);
if s<1
a(6)=1-s;
end
end
a
sum(a)

a =

0.0004
0.2851
0.1708
0.2032
0.0947
0.2458

ans =

1本回答被提问者采纳
第3个回答  2009-09-13
rand(6, 1) 可以产生6个于0到1之间的伪随机数,均值为0,也就是说和为0.
第4个回答  2009-09-13
应该是
x1=rand(1);
x2=rand(1);
x3=rand(1);
x4=rand(1);
x5=rand(1);
x6=1-x1-x2-x3-x4-x5

while x6<0
x1=rand(1);
x2=rand(1);
x3=rand(1);
x4=rand(1);
x5=rand(1);
x6=1-x1-x2-x3-x4-x5
end
x1 x2 x3 x4 x5 x6

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网