Я пытаюсь понять, как работает универсальное хэширование. Определяется h(x) = [(a*x + b) mod p] mod m
где a,b
- случайные числа, m
- размер хеш-таблицы, x
- ключ, и p
- простой номер. Например, у меня есть несколько различных ключей:Универсальное недоразумение хеширования
92333
23347
20313
и для того, чтобы создать универсальную хэш-функцию, я должен к следующему:
Let a = 10, b = 22, p = 313, m = 100
h(92333) = [(10 * 92333 + 22) mod 313] mod 100 = 2 mod 100 = 2
h(23347) = [(10 * 23347 + 22) mod 313] mod 100 = 307 mod 100 = 7
...
Но, наверное, каждый раз, когда я буду получать число в диапазоне от 0 до 99, и может быть много столкновений.
Так что мой вопрос: я правильно понял и применил универсальное хэширование?
Почему вы получаете номера от 2 до 10? Должно быть от 0 до 99. – Thilo