Ich versuche, den Hyperloglog-Zählalgorithmus mit stochastischer Mittelwertbildung zu implementieren. Um dies zu tun, brauche ich viele unabhängige universelle Hash-Funktionen, um Elemente in verschiedenen Teilströmen zu hashen.Wie bekomme ich eine Familie von unabhängigen universellen Hash-Funktionen?
Ich habe festgestellt, dass es nur ein paar Hash-Funktionen in hashlib gibt und es scheint keine Möglichkeit für mich, einen Samen oder etwas zu bieten? Ich denke mit verschiedenen Salzen für verschiedene Teilströme.
Ich bin kein Experte, aber da es geht um Kollisionen sein, trotzdem kann man nicht nur die Post-Hashing salzen, dh zum Hash selbst? Nicht sicher, was Sie mit "unabhängig" meinen, was die eigentliche Anforderung/Erwartung ist. – unwind
@unwind Wenn ich Salz verwenden würde, welche Bibliotheksfunktionen sollte ich verwenden, weil ich keine finden konnte. –
Es tut uns leid, Bibliothek Empfehlungen sind Off-Topic auf Stack Overflow. Aber wie auch immer ... die hashlib-Funktionen sind [kryptografische Hash-Funktionen] (https://en.wikipedia.org/wiki/Cryptographic_hash_function), sie können verwendet werden, um Hash-Tabellen usw. zu erstellen, aber sie sind relativ langsam. Vielleicht könnten Sie etwas mit Pythons eingebauter 'hash()' -Funktion tun, kombiniert mit der 'h (a, b, x) = Formel (a * x + b)% p% m' aus dem Wikipedia-Artikel zu [universal hashing ] (https://en.wikipedia.org/wiki/Universal_hashing#Hashing_integers). –