Я ищу генератор семейства хеш-функций, который мог генерировать семейство хеш-функций, данных ряд параметров. Я не нашел никакой подобный генератор до сих пор. Есть ли способ сделать это с hashlib
пакет?
Например, я хотел бы сделать что-то как:
h1 = hash_function(1)
h2 = hash_function(2)
...
и h1
и h2
были бы различные хеш-функции.
Для тех из Вас, кто мог бы знать об этом, я пытаюсь реализовать минимальный алгоритм хеширования для очень большого набора данных.
В основном у меня есть очень большой набор функций (100 миллионов к 1 миллиарду) для данного документа, и я должен создать 1 000 - 10 000 различных случайных перестановок для этого набора функций.
Я НЕ хочу создавать случайные перестановки явно так техника, которую я хотел бы использовать в следующем:
h
и рассмотрите это для двух индексов r
и s
r
появляется прежде s
в перестановке, если h(r) < h(s)
и сделайте это для 100 - 1 000 различных хеш-функций.Там кто-либо - известные библиотеки, которые я, возможно, пропустил? Или какой-либо стандартный способ генерировать семейства хеш-функций с Python, о котором Вы могли бы знать?
Я бы просто сделал что-нибудь вроде (если вам не нужна потокобезопасность - нетрудно изменить, если вам ДЕЙСТВИТЕЛЬНО нужна потокобезопасность - и при условии, что это 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