% 生成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!")
MATLAB随机生成30个和为56的数
最新推荐文章于 2024-05-21 23:05:45 发布