我必须创建一个函数,该函数需要一个随机字符串并将其散列为长度为32的二进制对象。我尝试了几件事,但是由于我的函数有时间要求,因此我无法做出足够快的操作还没有随机散列器。
这是我当前的哈希器,由于将值直接转换为二进制,因此产生错误的结果。这意味着将出现很多11111
和00000
,而在我的len=32
向量中的每个点上,它们最好完全随机(50/50)。
hash_element=str(mmh3.hash(element,102)**5)
binary_string=bin(int(hash_element,16))[2:34]
我也尝试过这种方法,效果很好,但是速度太慢了:
def Hasher(x):
XX=BitVector(size=32)
for j in range(0,31):
Index=mmh3.hash(x,j) %32
if XX[Index]==0:
XX[Index]=1
return XX
你们中的每个人都有一个高效(随机且快速)的想法吗?
每次对相同的字符串进行哈希处理时,哈希器都应产生完全相同的结果,这很重要。