散列函数python中的family生成器

Nic*_* M. 7 python hash generator

我正在寻找一个哈希函数族生成器,它可以在给定一组参数的情况下生成一系列哈希函数.到目前为止我还没有找到任何这样的发电机.有没有办法用hashlib包裹做到这一点?

例如,我想做的事情如下:

h1 = hash_function(1)
h2 = hash_function(2)
...
Run Code Online (Sandbox Code Playgroud)

并且h1h2将不同的散列函数.

对于那些可能了解它的人,我正在尝试在非常大的数据集上实现最小哈希算法.

基本上,对于给定的文档,我有一组非常大的特征(1亿到10亿),我需要为这组特征创建1000到10000个不同的随机排列.

我不想明确地构建随机排列,所以我想在下面使用的技术:

  1. 生成一个哈希函数h并考虑两个索引rs
  2. rs在排列之前出现if h(r) < h(s)和100到1000个不同的散列函数.

有没有我可能错过的已知图书馆?或者你可能知道使用python生成哈希函数族的任何标准方法?

Ale*_*lli 6

我只是做了类似的事情(如果你不需要线程安全 - 如果你需要线程安全并不难改变 - 并假设一个32位的Python版本):

import random

_memomask = {}

def hash_function(n):
  mask = _memomask.get(n)
  if mask is None:
    random.seed(n)
    mask = _memomask[n] = random.getrandbits(32)
  def myhash(x):
    return hash(x) ^ mask
  return myhash
Run Code Online (Sandbox Code Playgroud)