Сейчас я пишу программу, которая выводит четыре 32-битных целых числа без знака в качестве вывода определенной функции. Я хочу хешировать эти четыре целых числа, чтобы сравнить вывод этой функции с будущими выводами.
Однако у меня возникли проблемы с написанием приличной хэш-функции. Когда я изначально писал этот код, я добавил простое сложение каждого из четырех целых чисел, которых, как я знал, будет недостаточно. Я пробовал несколько других методов, таких как смещение и добавление, но безрезультатно. Я получаю хэш, но он плохого качества, и функция генерирует массу коллизий.
Выходной хэш может быть либо 32-битным, либо 64-битным целым числом. Рассматриваемая функция генерирует много миллиардов хэшей, поэтому коллизии здесь представляют собой реальную проблему, и я хочу использовать большую переменную, чтобы гарантировать, что коллизий будет как можно меньше.
Может ли кто-нибудь помочь мне понять, как написать качественную хеш-функцию?