随机配对,无需重复

时间:2019-02-18 15:47:30

标签: python python-2.7

我有一个模型,可以模拟8个特工成对的社会。 我要创建一个7个列表的列表(每个列表是一个回合),这样,在7个列表(或回合)之后,每个元素(或代理)已与所有其他代理配对一次。 我已经成功定义了一个在7个列表中排列配对的函数,但是我需要做到不重复配对。

import random
agents = [1,2,3,4,5,6,7,8]
def group(agents):
    pairs = []
    for round in range(7):
        random.shuffle(agents)
        gen = zip(*[iter(agents)]*2)
        pairs.append(gen)
    return pairs
print (group(agents))

我希望输出是这样的(一次具有不同配对构成的列表的列表)。示例:

[[(1, 2), (3, 4), (5, 6), (7, 8)],
 [(1, 3), (2, 4), (5, 7), (6, 8)],
 [(1, 4), (2, 3), (5, 8), (6, 7)],
 [(1, 5), (2, 6), (3, 7), (4, 8)],
 [(1, 6), (3, 8), (5, 2), (7, 4)],
 [(1, 7), (2, 8), (3, 5), (4, 6)],
 [(1, 8), (3, 6), (5, 4), (7, 2)]]

我已经检查了这个similar question。而且我可以看到它对我的问题很有用,但据我了解,它既不能解决列表之间的重复问题,也不能解决每个列表中的随机排列问题。

0 个答案:

没有答案