@varkenilme

Как сделать рандомайзер с возможностью проверки цепочки?

Помогите подобрать какую то мат функцию позволяющую вычитывать будущий вектор использую текущий + секретное число.
Например K = 0x5114, A = 80.
f(K,A) -> числа в диапазоне от 0x0 до 0x4000.
и обратная функция af(x,A) = 0x5114.
Думал с начала о простом поиске точки не линии или как то через треугольники. но как то не сложилось решить в лоб.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега Алгоритмы
♬♬
Перемешивать биты в порядке, определяемом «секретом». Так при фиксированном числе бит один диапазон однозначно отображается в такой же, в псевдослучайном порядке, т.е. 1, 2, 3 на входе даст «случайно» разбросанные на выходе.

Такое отображение множества называет биекция (bijection).

Например, зеркалить порядок битов, а там, где у секрета "1", попарно ещё раз менять местами.
Для байта:
10101101  // вход: 173
10110101  // отзеркалили = 181
01010000  // секрет = 80
          // поменяли местами где "1" в секрете
11100101  // получилось 229


Но надо что-то придумать с диапазонами.
0 .. 0x3FFF это 14 бит. На входе, видимо, надо тоже 14, хотя можно домножить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы