2017-06-03 27 views
0

我想要生成二进制文件,其中项目之间的平均海明距离大约为50%。 第二个条件是距离不应低于〜40%或高于〜60%。 另一个复杂因素是项目不是按顺序生成的,而是偶尔会出现,而且我不想循环所有项目以检查和重新生成,因为一段时间后它会变成一个缓慢的过程。生成平均汉明距离为50%的随机二进制文件?

有没有一种机制或算法来实现这一目标?

目前我使用下面的代码:

def rand(size): 
    op = np.random.uniform() 
    return np.random.choice([0,1], size=size, p=[op, 1-op]) 

,但即使我生成10个项目它打破F.E. (汉明DIST):

[ [ 0 2510 8209 4305 3896 1619 7231 6356 8103 3265] 
    [2510 0 8131 4347 3940 1697 7219 6334 8037 3305] 
    [8209 8131 0 5858 6449 9312 2100 3317 1030 7196] 
    [4305 4347 5858 0 4661 4088 5598 5311 5764 4590] 
    [3896 3940 6449 4661 0 3485 6093 5650 6385 4251] 
    [1619 1697 9312 4088 3485 0 8034 6739 9152 2716] 
    [7231 7219 2100 5598 6093 8034 0 3831 2238 6510] 
    [6356 6334 3317 5311 5650 6739 3831 0 3405 5933] 
    [8103 8037 1030 5764 6385 9152 2238 3405 0 7112] 
    [3265 3305 7196 4590 4251 2716 6510 5933 7112 0]] 

分钟:1030 平均距离:0.470624%

顺便说一句。二进制文件是10 000位。

回答

0

到目前为止,以下解决方案似乎表现符合我的预期。

def rand(size): 
    return [np.random.randint(0,2) for _ in xrange(size)] 

将更新,当我做更广泛的测试时,如果没关系。