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)
Run Code Online (Sandbox Code Playgroud)例:
codebook = generate_codebook(4,3,2)
codebook
1 1111
2 1001
3 0101
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
226 次 |
最近记录: |