【问题标题】:Permutations with repetition given a number of dices给定多个骰子的重复排列
【发布时间】:2022-01-05 12:39:00
【问题描述】:

我在互联网上寻找解决方案,但找不到答案,主要是因为我的英语很差(我无法提出正确的问题)。

在给定骰子数量的情况下,我需要生成所有可能的骰子排列(组合)列表。

例如,2 个骰子应该给我以下列表:

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

我正在考虑使用 itertools 作为以下代码:

from itertools import permutations

perm = permutations([1, 2, 3, 4, 5, 6], 2)

print(list(perm))

但是,当我运行它时,我得到了与需要完全相同的结果,但没有重复数字:

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

我也可以使用以下代码:

lst = []

for i in list(range(1,7)):
    for j in list(range(1,7)):
        lst.append([i, j])
                  
print(lst)

...但我必须提前知道我使用了多少个骰子。

我希望我能正确解释我的问题。对不起我的英语。

【问题讨论】:

    标签: python permutation itertools


    【解决方案1】:

    您要查找的内容称为Cartesian Productitertools 有一个名为 product 的方法,它可以为您完成这项工作。

    在你的情况下,你会像这样使用它:

    from itertools import product
    prod = product([1,2,3,4,5,6], repeat=2)
    
    print(list(prod))
    

    【讨论】:

    • 非常感谢。这正是我一直在寻找的。我一定搜索得更好。
    猜你喜欢
    • 2012-07-07
    • 2021-12-14
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多