@varkenilme

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

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

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

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


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

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

Войти через центр авторизации
Похожие вопросы