让我们假设这段代码random.seed(42) random.sample(range(0,40), 4)输出:[7, 1, 17, 15]我应该在这段代码中修改什么来生成随机数,其中列表中任意两个数字之间的最小距离将至少为10或更大。就像[0, 10, 25, 39] or [0, 12, 23, 38 ]一样。可能的重复项是this。谢谢。
发布于 2018-08-19 23:03:14
由于4个数字必须保持10的距离,这就留下了40个数字中仅有10个的“回旋余地”,以便4个数字随机分布(因为40 -3* 10 = 10)。因此,您可以简单地在10个数字的房间内随机选择4个数字,计算增量,然后添加增量和相应的10,以获得完整的列表。
import random
d = sorted(random.randint(0, 9) for _ in range(4))
o = [b - a for a, b in zip([0] + d[:-1], d)]
print([i * 10 + sum(o[:i + 1]) for i in range(4)])以下是10次运行的示例:
[1, 13, 24, 37]
[4, 17, 27, 39]
[0, 10, 23, 33]
[1, 12, 27, 37]
[0, 13, 24, 35]
[3, 14, 27, 39]
[0, 11, 21, 38]
[1, 14, 26, 37]
[0, 11, 23, 39]
[1, 15, 28, 38]https://stackoverflow.com/questions/51918580
复制相似问题