怎样用matlab产生一组和为1的随机数
答案:2 悬赏:30 手机版
解决时间 2021-03-18 04:52
- 提问者网友:像風在裏
- 2021-03-17 22:21
怎样用matlab产生一组和为1的随机数
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-03-17 23:04
参考代码:
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
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
全部回答
- 1楼网友:等灯
- 2021-03-17 23:47
>> 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
>>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯