Sea*_*ito 6 python encryption algorithm cryptography vector
我正在尝试生成n一些任意长度的二进制向量l,其中每个向量i的汉明距离d(其中d是偶数)来自每个其他向量j.我不知道是否有任何之间的关系的理论n,l以及d,但如果有这个任务的任何实现我不知道.我目前的实施如下所示.有时候,我成功了,其他时间的代码挂起,这表明无论是)这是不可能找到n这样的载体给定l和d,或b)的搜索需要很长的时间,特别是对于大的值l.
我的问题是:
之间存在着什么样的理论关系n,l和d?
import numpy as np
def get_bin(n):
    return ''.join([str(np.random.randint(0, 2)) for _ in range(n)])
def hamming(s1, s2):
    return sum(c1 != c2 for c1, c2 in zip(s1, s2))
def generate_codebook(n, num_codes, d):    
    codebooks = []
    seen = []
    while len(codebooks) < num_codes:
        code = get_bin(n)
        if code in seen:
            continue
        else:
            if len(codebooks) == 0:
                codebooks.append(code)
                print len(codebooks), code
            else:
                if all(map(lambda x: int(hamming(code, x)) == d, codebooks)):
                    codebooks.append(code)
                    print len(codebooks), code
            seen.append(code)
    codebook_vectorized = map(lambda x: map(lambda b: int(b), x), codebooks)
    return np.array(codebook_vectorized)
例:
codebook = generate_codebook(4,3,2)
codebook
1 1111
2 1001
3 0101