MATLAB怎么生成一组和为定值的随机数

 我来答
xuzhexin0913
推荐于2017-11-21 · TA获得超过574个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:148万
展开全部

参考代码:

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

dukinkin
2015-10-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:938万
展开全部
先生成一组随机数,然后把和归一化,再乘以要求总和就可以了

例如要生成10个总和为10的随机数
A=rand(10,1);
A=10*A/sum(A);

这样A就是10个和为10的随机数
其实 A/sum(A)就是总和为1的随机数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式