Риск показать мое невежество, как я и М определены? Я бы предположил, что M равен размеру, и предположил бы, что я счетчик количества вставок, но это не добавит к вашему выводу. Однако моя реализация сталкивается не с 26, а с 42, что означает, что до коллизии использовалось более половины пространства ключей.
Но потом я понял, что если указать, что мне нравится, позиция будет зависеть от порядка вставки.
В тот момент я уже ответил, но запаниковал и удалил его, не могу выглядеть глупо в Интернете, Интернет никогда не забывает. Но потом я начал думать, что, возможно, у меня было неправильное представление о хешировании, возможно, числа - это не отдельные единицы, а часть чего-то, что хэшируется как единое целое, и тогда зависимость порядка верна.
Может ли кто-нибудь улучшить мои дикие догадки?
Хорошо, давайте развернем это.
hash(x) = x % M
hash2(x) = 13 - (x % 7)
f(i) = i * hash2(x)
hi(x) = (hash(x) + f(i)) % M
для: i = 0, M = 10, x = 27
hash(x) = 27 % 10 -> 7
hash2(x) = 13 - (27 mod 7) -> 7
f(i) = 0 * 7 - > 0
hi(x) = (7 + 0) % 10 -> 7
для: i = 1, M = 10, x = 22 * 1017 *
hash(x) = 22 % 10 -> 2
hash2(x) = 13 - (22 mod 7) -> 12
f(i) = 1 * 12 - > 12
hi(x) = (12 + 12) % 10 -> 4
для: i = 2, M = 10, x = 16
hash(x) = 16 % 10 -> 6
hash2(x) = 13 - (16 mod 7) -> 11
f(i) = 2 * 11 - > 22
hi(x) = (6 + 22) % 10 -> 8
и так далее, как вы можете видеть, он довольно быстро расходится с тем, что было у вас