в вашем файле маршрута вы пишете
Route::resource('suppliers', 'SuppliersController');
используйте именованный маршрут как
Route::resource('suppliers', 'SuppliersController')->name('suppliers');
Мультипликативный метод Knuth:
hash(i)=i*2654435761 mod 2^32
В целом, необходимо выбрать множитель, который находится в порядке размера хэша (2^32
в примере) и не имеет никаких общих множителей с ним. Таким образом, хеш-функция покрывает все Ваше пространство хеша однородно.
Редактирование: самый большой недостаток этой хеш-функции - то, что она сохраняет делимость, поэтому если Ваши целые числа будут все делимыми 2 или 4 (который весьма распространен), то их хеши будут также. Это - проблема в хэш-таблицах - можно закончить с только 1/2 или 1/4 используемых блоков.
Зависит от того, как Ваши данные распределяются. Для простого счетчика самая простая функция
f(i) = i
будет хороша (я подозреваю оптимальный, но я не могу доказать его).
Эта страница перечисляет некоторые простые хеш-функции, которые склоняются к прилично в целом, но любой простой хеш имеет патологические случаи, где это не работает хорошо.
Существует хороший обзор по некоторым хеш-алгоритмам в Вечно Confuzzled. Я рекомендовал бы, чтобы Bob Jenkins по одному хешировал, который быстро достигает лавины и поэтому может использоваться для эффективного поиска хэш-таблицы.
Ответ зависит от большого количества вещей как:
я предлагаю, чтобы Вы смотрели на семья Merkle-Damgard хеш-функций как SHA-1 и т.д.
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