@miki131

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

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


Какие еще есть варианты честного выбора?
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
Можно еще загадать большое целое число INTRND (не позволяющее подобрать полным перебором его по хешу, например, на 128 бит), точно также опубликовать его хеш, а потом WIN_NUMBER = (INTRND mod TOTAL) +1. Вот только модулярная арифметика хуже принимается пользователями, поэтому умножение на число [0..1] более интуитивно понятно всем.

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

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

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