永发信息网

怎样用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楼网友:等灯
  • 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 >>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯