首页 文章

在python中强制所有可能的矩阵组合

提问于
浏览
0

我目前在python中使用numpy创建了一个3x3矩阵(将每个值初始化为0) . 我想创建一个小的python程序,在矩阵中强制每个可能的KEY组合 . 例如:

[1, 0, 0
 0, 0, 0
 0, 0, 0]

[1, 1, 0
 0, 0, 0
 0, 0, 0]

等...一直到:

[9, 9, 9
 9, 9, 9
 9, 9, 9]

看起来非常微不足道,但由于某种原因无法绕过它 . 我这样做的原因是因为我希望获得每个矩阵组合的逆(这很容易使用numpy)并将其乘以另一个矩阵,直到我得到一个我正在寻找的解决方案...基本上我正在尝试为Crypto Hill Cipher蛮横 .

非常感谢您的帮助!

2 回答

  • 2

    这应该是我想的 .

    from itertools import combinations_with_replacement
    import numpy as np
    
    x = np.empty((3,3), dtype=int)
    
    for comb in combinations_with_replacement(range(10),9):
        x.flat[:] = comb
    
  • 1

    如果你的字母表只是10位数,那么你在那里所做的就是技术上称为“以10为基数计数”;-)

    在每一步增加最后一位(右下角) . 如果是9,则将其环绕为0并递增倒数第二个数字,依此类推,直到经过100亿步后顶部数字换行 .

    也许有可能用 itertools.product 做更高效的事情,但是因为那不会产生你需要的numpy矩阵,也许不会 .

    如果您的字母表是26个字符,那么您可能需要等待一段时间才能完成运行,因为26 ** 10是一个相当大的数字 .

相关问题