我正在使用Google开发的Java版本的MurMurHash3(google.common.hash.HashFunction和google.common.hash.Hashing)来创建 n 个独立的哈希函数(使用 n 个不同的种子)来哈希ID。这是一段代码:
for(int i=0; i<seeds.length;i++){
signature[i] = hash(id, seeds[i]);
}
private long hash(int id, int seed){
HashFunction hf = Hashing.murmur3_128(seed);
long signature = hf.hashLong((long)id).asLong();
我尝试使用mmh3(https://pypi.org/project/mmh3/)在Python 2.7中复制以上代码,但是Python版本仅接受字符串作为输入(或NumPy int),并使用相同的种子返回不同的结果。这是一段代码:
def create_signature(self, id):
v = np.int64(id)
signature = []
for i in range(len(self.__seeds)):
h = mmh3.hash128(v, self.__seeds[i], signed=True)
signature.append(h)
return signature
在一组不同的ID上应用mmh3库,也有很多冲突(与Java版本没有冲突)。是否可以通过Python获得与Java版本相同的结果?