Выберите форму розыгрыша
Выбор в основном зависит от того, как результат должен выглядеть для людей, которые за ним наблюдают.
Число или набор чисел — генератор случайных чисел для заданного вами диапазона, лотерейные числа для пятнадцати игр с фиксированными правилами, кости, когда нужна запись костей и модификаторы, а не просто диапазон.
Один победитель из списка — выбор имени, когда нужен просто ответ, колесо фортуны, когда за процессом наблюдает аудитория и драматизм важен сам по себе.
Да или нет — подбрасывание монеты.
Все распределены по группам — генератор команд, который распределяет по кругу, так что 7 человек на 3 группы даёт 3/2/2, а не сваливает остаток в последнюю группу.
Игра, растянутая во времени — ведущий бинго, 75, 90 или 99 шаров, управляемых с одного экрана.
Проверка чужой жеребьёвки — верификатор жеребьёвок, единственный инструмент здесь, который ничего не генерирует.
Что делает эту категорию особенной
Любой сайт может выдать случайное число. Более сложная задача — выдать такое, которое скептически настроенный участник примет впоследствии, и это цепочка, проходящая через все инструменты здесь, а не функция какого-то одного из них.
Работает это так. Запустите розыгрыш с сидом — значением, которое вы выбираете сами, или которое подбирает и показывает вам инструмент. Сид делает розыгрыш воспроизводимым: любой, у кого есть сид и тот же список, получит тот же результат — каждый раз. Само по себе этого недостаточно, потому что организатор мог бы запускать розыгрыши с разными сидами, пока один не выпадет удобно, и опубликовать только его.
Поэтому у розыгрыша есть ещё и отпечаток списка, по которому он проводился. Публикация сида и отпечатка до розыгрыша связывает вас и со списком участников, и с методом. После этого кто угодно может вставить сертификат в верификатор, который пересчитает результат и проверит, что сид, список и итог согласуются друг с другом. Измените имя, добавьте позднюю заявку или подмените победителя — и отпечаток перестанет совпадать.
Это не доказывает, что организатор честен. Это доказывает, что именно этот розыгрыш, проведённый по именно этому списку, дал именно этот результат — а раньше это было невозможно проверить никому, кроме организатора.
Когда сид не нужен
Оставьте поле сида пустым, и розыгрыш будет использовать crypto.getRandomValues():
энтропию вашей операционной системы, а не воспроизводимую последовательность. Это
правильный выбор для всего, где воспроизводимость была бы скорее недостатком, чем
преимуществом, — выбор пароля, деление счёта или разрешение спора. Никому не нужно
проверять, кто из вас моет посуду.
Почему розыгрыш в браузере лучше физического предмета
Настоящая монета слегка смещена тем, как отчеканены её стороны, и падает так, как начала полёт, немного чаще, чем в среднем. Дешёвый кубик ещё хуже: литые точки удаляют разное количество материала с каждой грани, поэтому грань с шестёркой чуть легче остальных. Ни то, ни другое смещение не имеет значения для настольной игры, и ни от того, ни от другого нельзя избавиться, действуя аккуратнее.
Розыгрыш, вычисленный из пула энтропии операционной системы, не наследует никакой физической асимметрии. Он не «так же хорош», как настоящая монета — с точки зрения честности он лучше.