作业帮 > 综合 > 作业

matlab产生随机整数,和为定值.为什么最后生成的一组数四舍五入之后和比定值小了一个?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 13:00:44
matlab产生随机整数,和为定值.为什么最后生成的一组数四舍五入之后和比定值小了一个?
我要产生10个整数且和为2000000,按下面方法生成之后最后对nev求和却是1999999.怎么才能得到和为2000000的10整数呢?
M=2000000; % 最后总和
i=rand(1,10); % 10组数和为2000000
j=M*i/(sum(i));
nev=round(j); % 取整
请高手指点,不胜感激~
首先你的代码变得不错,只需在上面改一点即可.代码如下:
M=2000000; % 最后总和
i=rand(1,10); % 10组数和为2000000
j=M*i/(sum(i));
nev=round(j); % 取整
nev(10) = 2000000-sum(nev(1:9));
如你所知,10个数之和为2000000,其实自由度为9,所以当你确定了,其他9个数时,这10个数实际上是已确定的.所以我这里直接令最后一个为2000000-其他9个的和.
有什么问题请毫不犹豫追问我~
再问: 想想您请教我在百度问的另一个问题 对矩阵Nnev赋值 Nnev=zeros(100,24); i=1;j=1;k=1; while k