
Как провести честный розыгрыш случайным числом
Розыгрыш в соцсетях почти всегда заканчивается одним и тем же комментарием: «а с чего вы взяли, что не подкрутили результат?». Снять этот вопрос помогает только число из инструмента, который физически не может подыгрывать. Выбор победителя «на глаз» и пролистывание списка пальцем до случайной остановки тут не работают. Разберём, что вообще значит «случайное» число и как провести розыгрыш так, чтобы результату поверили.
Что значит «случайное» число
Не любой рандом одинаково случаен. Большинство языков программирования по умолчанию используют быстрый, но предсказуемый генератор. Если знать начальное состояние (seed), всю последовательность чисел можно вычислить заранее. Для игры это не страшно, а для розыгрыша с призом уже уязвимость: результат теоретически можно предсказать или подобрать нужный момент запуска.
Генератор случайных чисел в PixelTool устроен
иначе. Он берёт числа из crypto.getRandomValues, встроенного в браузер
источника криптографической случайности, который использует энтропию самой
операционной системы, а не предсказуемую формулу. Тот же принцип лежит в основе
генератора паролей: там тоже важно, чтобы результат
нельзя было ни предсказать, ни воспроизвести.
Как провести розыгрыш случайным числом
-
Пронумеруйте участников. Присвойте каждому число от 1 до N по порядку, скажем по номеру комментария под постом или порядку регистрации. Список важно зафиксировать до генерации и не менять после, иначе сам смысл честности теряется.
-
Задайте диапазон, равный числу участников. В генераторе укажите минимум 1 и максимум, равный количеству участников. Число, которое выпадет, и есть номер победителя.
-
Для нескольких призов генерируйте по одному числу за раз. Если выпавший номер уже выигрывал, нажмите «Сгенерировать» ещё раз: это то же самое, что перетянуть жребий заново, если бумажка с тем же именем попалась дважды.
-
Сохраните результат сразу. Инструмент хранит историю последних генераций и умеет скачать результат файлом. Сделайте это до того, как решите провести ещё одну генерацию «для проверки», ведь каждый новый запуск даёт уже другое число.
-
Публикуйте вместе с результатом сам процесс. Скриншот или запись экрана в момент генерации убеждает лучше, чем финальное число в посте. Подписчики видят, что число появилось на их глазах, а не было выбрано заранее.
Если розыгрыш подразумевает деление участников на группы, скажем жеребьёвку команд для турнира, для этого удобнее рандомайзер команд. Он сразу распределяет список имён на нужное число групп.
Где ещё нужны случайные числа
Розыгрыши — самый частый повод, но не единственный:
- Статистика и выборка. Случайное подмножество из большого массива данных для опроса или A/B-теста должно быть непредвзятым, иначе результат исследования исказится.
- Тестирование. Разработчики генерируют случайные входные данные, чтобы проверить программу на неожиданных значениях, которые не пришли в голову при ручном тестировании.
- Игры. Бросок кубика, порядок ходов, выпадение карты. Везде, где результат обязан быть непредсказуемым до момента броска.
- Криптография. Ключи шифрования и токены сессий строятся на той же случайности, что и числа в генераторе. Предсказуемый ключ значит взламываемый ключ.
Коротко
- Настоящая случайность приходит из источника вроде
crypto.getRandomValues, которым нельзя управлять заранее. Выбор «на глаз» и генератор языка по умолчанию на эту роль не годятся. - Для розыгрыша: пронумеруйте участников заранее, задайте диапазон под их число, при нескольких призах генерируйте по одному номеру за раз и пропускайте повторы, сохраните результат сразу после генерации.
- Публикация самого процесса генерации снимает вопросы о честности розыгрыша лучше любых объяснений.
Генератор случайных чисел
Бесплатный онлайн генератор случайных чисел. Генерируйте криптографически надёжные случайные числа с опцией без дубликатов для игр и розыгрышей
Попробовать



