Выбор множителя для (строковой) хеш-функции

Есть ли у вас какие-либо советы / правила по выбору множителя для использования в (мультипликативной) хеш-функции. Функция вычисляет хеш-значение строки.

На следующей странице представлено несколько эффективных реализаций хэш-функций общего назначения, которые демонстрируют минимальные коллизии: partow.net/programming/hashfunctions/index.html

Matthieu N. 01.11.2010 02:11
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
14
1
1 958
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Исторически 33 кажется популярным выбором, и, как правило, он работает довольно хорошо. Но никто не знает почему. Подробнее: Смотри сюда

Ответ принят как подходящий

Вы хотите использовать что-то относительно простое по размеру вашего набора. Таким образом, при повторении цикла вы не получите те же числа, которые только что попробовали.

Недавно у меня был интересный разговор с коллегой о хэш-функции. Наши выводы были следующими:

Если вам действительно нужно написать хорошую хеш-функцию, которая минимизирует коллизии больше, чем реализации по умолчанию, доступные на стандартных языках, вам понадобится ученая степень по математике.

Если вы пишете приложения, в которых пользовательская хеш-функция заметно улучшит производительность вашего приложения, вы - Google, и у вас есть много кандидатов наук по математике, которые сделают эту работу.

Извините, что не отвечаю прямо на ваш вопрос, но суть в том, что на самом деле нет необходимости писать свою собственную хеш-функцию для String. С каким языком вы работаете? Я предполагаю, что есть простой способ вычислить «достаточно хороший» хэш-код.

Другие вопросы по теме