Из этой ссылки , выделяя под некоторым разделом, который дает обзор
Что делает хорошую функцию хеширования
Большинство хороших хеш-функций работают путем вычисления остатка после деления на размер таблицы N.
Это всегда дает значение от 0 до N-1, поэтому оно подходит, но если N - простое число, то оно также отлично разбрасывает данные по столу. Конечно, если у вас есть текстовое значение, которое вы хотите хэшировать, вы сначала должны преобразовать его в подходящее числовое значение, и простая схема, подобная приведенной в примере, не подойдет.
Вам необходимо создать другое числовое значение для каждого возможного текстового значения, и сложение кодов ASCII первых двух букв явно не работает. Лучшим способом является взвешивание каждого из кодов ASCII по положению буквы путем умножения на 1 для первого символа, 10 для второго, 100 для третьего и т. Д. Перед сложением их, чтобы получить одно значение.
В общем, создание действительно хорошей хеш-функции сложно, и в большинстве случаев вам нужно найти такую, которая имеет хорошие свойства и была хорошо протестирована.