如何生成10个和为40、取值范围2-6的随机整数?
生成10个2-6之间且总和为40的整数的方法
核心思路
先给每个数分配最小值2,10个数的基础总和为20,距离目标40还差20的增量。只需把这20的增量随机分配给10个数,每个数最多加4(因为6-2=4),最终每个数为2 + 分配到的增量,就能保证所有数落在2-6区间且总和为40。
具体实现逻辑(以Python为例)
import random # 初始化每个数为基础值2 nums = [2] * 10 remaining_increment = 40 - sum(nums) # 待分配的总增量:20 for i in range(len(nums)): # 每个数最多加4,取剩余增量和4的最小值作为本次分配量 add = random.randint(0, min(remaining_increment, 4)) nums[i] += add remaining_increment -= add if remaining_increment == 0: break print(" + ".join(map(str, nums)), "=", sum(nums))
示例结果
2 + 6 + 2 + 5 + 6 + 2 + 2 + 6 + 3 + 6 = 403 + 5 + 4 + 4 + 4 + 5 + 3 + 5 + 4 + 3 = 406 + 2 + 6 + 2 + 6 + 2 + 6 + 2 + 6 + 2 = 40
合理性验证
10个数的最小总和是10*2=20,最大总和是10*6=60,40处于这个区间内,因此必然存在符合要求的整数组合。只要分配的增量总和为20,且单个增量不超过4,就能得到满足条件的数组。
内容的提问来源于stack exchange,提问作者Scrampus
相关产品推荐
相关产品推荐

