Задать вопрос
@miki131

Как сделать честный выбор числа?

Стоит задача по-честному выбирать победное число WIN_NUMBER от 1 до TOTAL преждевременно не зная TOTAL.
Сейчас я сначала выбираю любое маленькое число RAND от 0 до 1 ( RAND = Math.random() ) и показываю людям хеш от него md5(RAND) и в конце, когда я знаю общее количество TOTAL, победное число я считаю таким образом
WIN_NUMBER = floor((TOTAL - 0.0000000001) * (RAND / 100)) + 1


Какие еще есть варианты честного выбора?
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Оценить 6 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Математика для анализа данных
    6 месяцев
    Далее
  • karpov.courses
    Математика для Data Science
    1 месяц
    Далее
  • Фоксфорд
    Алгоритмика и основы написания кода. 3–5 классы. (в записи)
    1 месяц
    Далее
Пригласить эксперта
Ответы на вопрос 1
Можно еще загадать большое целое число INTRND (не позволяющее подобрать полным перебором его по хешу, например, на 128 бит), точно также опубликовать его хеш, а потом WIN_NUMBER = (INTRND mod TOTAL) +1. Вот только модулярная арифметика хуже принимается пользователями, поэтому умножение на число [0..1] более интуитивно понятно всем.

И salt как верно замечено, обязательно храните в тайне до раскрытия.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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