Оберіть форму жеребкування
Вибір здебільшого залежить від того, як має виглядати результат для людей, які спостерігають.
Число або набір чисел — генератор випадкових чисел для заданого вами діапазону, лотерейні числа для п’ятнадцяти ігор з фіксованими правилами, кубики, коли потрібна нотація кубиків і модифікатори, а не простий діапазон.
Один переможець зі списку — вибір імені, коли вам потрібна відповідь, колесо фортуни, коли за цим спостерігає аудиторія і драматизм — це і є суть.
Так чи ні — підкидання монети.
Усі розподілені по групах — генератор команд, який розподіляє по колу, тож 7 осіб на 3 групи дають 3/2/2, а не скидання залишку в останню групу.
Гра, що триває якийсь час — ведучий бінго, 75, 90 чи 99 куль, керовані з одного екрана.
Перевірка чужого жеребкування — верифікатор жеребкування, єдиний інструмент тут, який нічого не генерує.
Що робить цю категорію відмінною
Будь-який сайт може згенерувати випадкове число. Складніша задача — згенерувати таке, яке скептичний учасник прийме потім, і це ланцюжок, що проходить через кожен інструмент тут, а не функція якогось одного з них.
Працює це так. Запустіть жеребкування із насінням (seed) — значенням, яке ви обираєте, або яке підбирає й показує вам сам інструмент. Насіння робить жеребкування відтворюваним: будь-хто, хто має це насіння і той самий список, отримає той самий результат щоразу. Саме по собі цього недостатньо, бо організатор міг би провести жеребкування з різними насіннями, доки одне не вийде зручним, і опублікувати лише його.
Тож жеребкування також отримує відбиток (fingerprint) списку, на якому воно проведене. Публікація насіння й відбитка до жеребкування зобов’язує вас і щодо учасників, і щодо методу. Пізніше будь-хто може вставити сертифікат у верифікатор, який перераховує результат і перевіряє, що насіння, список і результат узгоджуються. Зміна імені, додавання пізнього запису чи підміна переможця — і відбиток перестає збігатися.
Це не доводить, що організатор чесний. Це доводить, що це жеребкування, над цим списком, дало цей результат — а саме це раніше було неможливо перевірити будь-кому іншому.
Коли насіння не потрібне
Залиште поле насіння порожнім, і жеребкування використає crypto.getRandomValues() замість
цього: ентропію вашої операційної системи, а не відтворювану послідовність. Це правильний
вибір для всього, де відтворюваність була б слабкістю, а не перевагою — вибір
пароля, поділ рахунку чи розв’язання суперечки. Нікому не потрібно перевіряти,
чия черга мити посуд.
Чому жеребкування в браузері краще за фізичний предмет
Справжня монета трохи зміщена тим, як карбують її грані, і приземляється так, як почала обертання, дещо частіше, ніж має бути. Дешевий кубик ще гірший: литі крапки видаляють різну кількість матеріалу з кожної грані, тому сторона з шісткою трохи легша. Жодне зі зміщень не має значення для настільної гри, і жодне не можна усунути обережністю.
Жеребкування, обчислене з пулу ентропії операційної системи, не успадковує жодної фізичної асиметрії. Це не «так само добре», як справжня монета — за критерієм справедливості, це краще.