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