我正在使用由 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 版本结果?