Я ищу хеш-функцию, которая работает с небольшим целым числом (скажем, в диапазоне 0 ... 1000) и выводит 64-битный int.
Набор результатов должен выглядеть как случайное распределение 64-битных целых чисел: равномерное распределение без линейной корреляции между результатами.
Я надеялся на функцию, для выполнения которой требуется всего несколько циклов процессора. (код будет на C ++).
Я подумал о умножении входных данных на большое простое число и взятии по модулю 2 ** 64 (что-то вроде линейного конгруэнтного генератора), но между выходами есть очевидные зависимости (в младших битах).
Поиск в Google ничего не дал, но я, вероятно, использую неправильные условия поиска.
Существует ли такая функция?
Некоторая справочная информация:
Я не хочу использовать в алгоритме большую постоянную таблицу с псевдослучайными числами и вычислять случайные числа на лету.
Безопасность не проблема.