MATLAB随机生成30个和为56的数

% 生成30个随机整数,范围在0到3之间
numbers = randi([1,5], 1, 30);
sum_number=56;
 % 计算当前总和
 current_sum = sum(numbers);  
% 调整其中一个或多个数,使总和为62
    if current_sum < sum_number
    % 需要增加一些数来达到总和为62
        remaining_sum = sum_number - current_sum;
    % 随机选择一个位置增加余下的和
        while remaining_sum > 0
            index = randi([1, 30]);
            increase_amount = min(remaining_sum, 5); % 最多加5,以确保生成的数仍然大于等于0
            numbers(index) = numbers(index) + increase_amount;
            remaining_sum = remaining_sum - increase_amount;
        end
    elseif current_sum > sum_number
    % 需要减少一些数来达到总和为56
        excess_sum = current_sum - sum_number;
    % 随机选择一个位置减少多余的和
        while excess_sum > 0
            index = randi([1, 30]);
            decrease_amount = min(excess_sum, numbers(index)); % 最多减少当前数的值
            numbers(index) = numbers(index) - decrease_amount;
            excess_sum = excess_sum - decrease_amount;
        end
    end
filename1 = 'data.xlsx';
xlswrite(filename1, numbers);
disp("succeed!")






  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值