Перемешивать биты в порядке, определяемом «секретом». Так при фиксированном числе бит один диапазон однозначно отображается в такой же, в псевдослучайном порядке, т.е.
1, 2, 3
на входе даст «случайно» разбросанные на выходе.
Такое отображение множества называет
биекция (bijection).
Например, зеркалить порядок битов, а там, где у секрета "1", попарно ещё раз менять местами.
Для байта:
10101101 // вход: 173
10110101 // отзеркалили = 181
01010000 // секрет = 80
// поменяли местами где "1" в секрете
11100101 // получилось 229
Но надо что-то придумать с диапазонами.
0 .. 0x3FFF
это 14 бит. На входе, видимо, надо тоже 14, хотя можно домножить.