Ответ 1
5381 - это просто число, которое при тестировании привело к количеству столкновений и лучшая авария. Вы найдете "магические константы" примерно в каждом хэш-алгоритме.
Может ли кто-нибудь сказать мне, почему номер 5381 используется в хеш-функции DJB?
Функция хэша DJB
h (0) = 5381
h (i) = 33 * h (i-1) ^ str [i]
Программа A c:
unsigned int DJBHash(char* str, unsigned int len)
{
unsigned int hash = 5381;
unsigned int i = 0;
for(i = 0; i < len; str++, i++)
{
hash = ((hash << 5) + hash) + (*str);
}
return hash;
}
5381 - это просто число, которое при тестировании привело к количеству столкновений и лучшая авария. Вы найдете "магические константы" примерно в каждом хэш-алгоритме.
Я обнаружил, что очень интересным свойством этого числа может быть то, что может быть причиной этого.
5381 - 709-е правое.
709 - 127-е место.
127 - 31-е место.
31 - 11-е место.
11 - 5-е поколение.
5 - 3-е правое.
3 - второе.
2 - первое простое число.
5381 - это первое число, для которого это происходит 8 раз. 5381st prime может превышать предел подписанного int, поэтому это хорошая точка для остановки цепочки.