По сути, я хотел бы помочь разработать алгоритм, который принимает заданное число и возвращает случайное число, не связанное с первым числом. Условия заключаются в том, что а) данное выходное число всегда будет одинаковым для аналогичного входного числа, и б) в пределах определенного диапазона (например, 1-100) все выходные числа будут разными. т.е. никакие два разных входных числа меньше 100 не дадут одинаковый выходной номер.
Я знаю, что это легко сделать, создав упорядоченный список чисел, перемешивая их случайным образом, а затем возвращая индекс ввода. Но я хочу знать, можно ли это сделать вообще без кеширования. Может быть, с каким-то алгоритмом хеширования? В основном причина этого в том, что если бы диапазон возможных выходов был намного больше, скажем 10000000000, тогда было бы нелепо генерировать весь диапазон чисел, а затем перемешивать их случайным образом, если бы вы собирались получить только несколько результатов из Это.
Неважно, на каком языке это написано, я просто хочу знать, возможно ли это. Я долго думал об этой проблеме и не могу придумать другого решения, кроме того, которое я уже придумал.
Изменить: у меня просто была другая идея; Было бы интересно иметь другой алгоритм, который возвращал бы обратный первому. Было бы интересно исследовать, возможно ли это.