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

в вашем файле маршрута вы пишете

Route::resource('suppliers', 'SuppliersController');

используйте именованный маршрут как

Route::resource('suppliers', 'SuppliersController')->name('suppliers');
91
задан Thomas Mueller 18 October 2015 в 08:17
поделиться

6 ответов

Мультипликативный метод Knuth:

hash(i)=i*2654435761 mod 2^32

В целом, необходимо выбрать множитель, который находится в порядке размера хэша (2^32 в примере) и не имеет никаких общих множителей с ним. Таким образом, хеш-функция покрывает все Ваше пространство хеша однородно.

Редактирование: самый большой недостаток этой хеш-функции - то, что она сохраняет делимость, поэтому если Ваши целые числа будут все делимыми 2 или 4 (который весьма распространен), то их хеши будут также. Это - проблема в хэш-таблицах - можно закончить с только 1/2 или 1/4 используемых блоков.

41
ответ дан Svante 24 November 2019 в 06:43
поделиться

Зависит от того, как Ваши данные распределяются. Для простого счетчика самая простая функция

f(i) = i

будет хороша (я подозреваю оптимальный, но я не могу доказать его).

26
ответ дан erikkallen 24 November 2019 в 06:43
поделиться

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

7
ответ дан Tyler McHenry 24 November 2019 в 06:43
поделиться

Существует хороший обзор по некоторым хеш-алгоритмам в Вечно Confuzzled. Я рекомендовал бы, чтобы Bob Jenkins по одному хешировал, который быстро достигает лавины и поэтому может использоваться для эффективного поиска хэш-таблицы.

3
ответ дан Christoph 24 November 2019 в 06:43
поделиться

Ответ зависит от большого количества вещей как:

  • , Где Вы намереваетесь использовать его?
  • , Что Вы пытаетесь сделать с хешем?
  • Вам нужна crytographically безопасная хеш-функция?

я предлагаю, чтобы Вы смотрели на семья Merkle-Damgard хеш-функций как SHA-1 и т.д.

2
ответ дан Josh Caswell 24 November 2019 в 06:43
поделиться
  • 32-битный мультипликативный метод (очень быстрый) см. @Rafal

     #define hash32 (x) ((x) * 2654435761)
    #define H_BITS 24 // Размер хеш-таблицы
    #define H_SHIFT (32-H_BITS)
    беззнаковая хэш-таблица [1 << H_BITS] 
    .... 
    слот без знака = hash32 (x) >> H_SHIFT
    
  • 32-битные и 64-битные (хорошее распространение) по адресу: MurmurHash

  • Целочисленная хеш-функция
5
ответ дан 24 November 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: