在Python中:
我如何生成一个N(例如10)伪随机整数的列表,每个伪随机整数都是从一个特定的范围(例如3到9之间)提取的,并且该列表的总和达到一个特定的值(例如58)?
对于本例,解决方案如下所示:
solution = [3, 7, 7, 9, 3, 6, 4, 8, 8, 3]
sum(solution)
58也就是说,10个数字,每个在3到9之间,加起来多达58个。
我尝试了一种使用np.random.dirichlet或np.random.multinomial的解决方案,就像在这里的相关问题中所建议的那样,但这些方法不允许从特定范围内选择整数。
发布于 2020-07-25 21:54:12
重复直到成功?
a = []
while sum(a) != 58:
a = random.choices(range(3, 10), k=10)平均需要17次尝试。
https://stackoverflow.com/questions/63093721
复制相似问题