怎样用matlab产生一组和为1的随机数

2025-09-11 18:53:25
推荐回答(3个)
回答1:

>>
x=rand(1,10);y=sum(x);r=x/y%r就是随机数和为一,且都是(0,1)内的数
r
=
columns
1
through
7
0.1623
0.0228
0.1636
0.1133
0.0175
0.0499
0.0980
columns
8
through
10
0.1716
0.1729
0.0282
>>
sum(r)
ans
=
1.0000
>>

回答2:

参考代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clc
clear
all
close
all
Sum
=
30;
%
指定的和
N
=
5;
%
随机数个数
r
=
zeros(1,
N);
%
生成的随机数
sumtemp
=
floor(Sum/N);
%
每生成一个随机数后,剩余的和
for
i=1:(N-1)
r(i)
=
sumtemp.*rand();
sumtemp
=
floor((Sum
-
r(i))/(N-i)
);
end
r(N)
=
Sum
-
sum(r(1:N-1));
fprintf(1,
'生成的随机数为:');
disp(r);
%--
验证
--%
sum_r
=
sum(r);
fprintf(1,
'生成的随机数的和为:%d\n',
sum_r);
输出
生成的随机数为:
4.1690
1.9026
8.5520
0.3445
15.0320
生成的随机数的和为:30

回答3:

x=rand(1,3);y=sum(x);r=x/y