Как вы выбираете / что такое основа в хэш-функции?

Я видел, что Radix 37 часто используется, мне просто интересно, что он обозначает. Я конвертирую строки в числа для хэш-функции и знаю, что мы будем использовать Radix 37 ASCII значения цифр, я просто не знаю, почему мы выбрали 37 как основание, это просто случайно?

Я знаю, что Radix = основа системы счисления.

Я вижу, что когда мы просто используем числа в функции hash (), мы используем основание 10 … потому что в качестве базы чисел мы будем использовать .. просто .. 0,1,2,3,4,5, 6,7,8,9.

Строки — я вижу, что основание для строки, которая имеет все заглавные буквы (без пробелов, я предполагаю), составляет 26 … Поскольку в алфавите 26 букв, и мы будем представлять каждую из них с номером 0 = A, 1 = B, 2 = C и т. Д.

Что, черт возьми, означает 37, я прочитал что-то о 31 или 33.
Что я прочитал и понял, так это то, что мы используем отличное от 26 основание, когда нам приходится иметь дело с пробелами, строчными буквами, цифрами и особыми случаями.

Из всех шаблонов, которые я вижу, я бы подумал, что если бы мы перевели строку в код ASCII, мы использовали бы количество символов в этом ASCII, равное 127, я думаю.

2

Решение

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]