Функция хэширования может зависеть от данных. Например (из статьи this), если ваши данные являются строками, и почти все они имеют разную длину, тогда простая длина строки может быть очень хорошей хэш-функцией (не очень реалистичной, я знаю). Или, например, действительные числа от 0 до 1 может иметь простой хэш-функции:Какую функцию хэша «хаки» вы используете?
значение * sizeOfHashTable
Я интересно, если вы используете такие хэш-функции, которые специально созданы вокруг входов? Есть еще примеры?
Эти типы «хаков» обычно не полезны. Они работают в особых случаях, но в общем случае они страдают от той или иной проблемы. Например, случай с реальными числами может быть ужасным, когда диапазон входных значений очень мал. Потому что многие числа будут решать одно и то же значение хэш-функции. Я проголосовал за то, чтобы закрыть это слишком широко. –
В примере с реальными числами возникла бы проблема, если входы не были распределены равномерно, для случайных входов было бы нормально. Диапазон уже определен - от 0 до 1. Единственная причина использовать такие «хаки» - это скорость. – nesvarbu