Как пользоваться
- Впишите диапазон в поля Минимум и Максимум. Подойдут любые целые числа, в том числе отрицательные; если поставить большее число в «Минимум», инструмент сам поменяет границы местами.
- Укажите Сколько чисел — от 1 до 1000 за один розыгрыш.
- Поставьте галочку Без повторов, если одно и то же число не должно выпасть дважды: победители конкурса, лотерейные числа, перемешивание пронумерованного списка.
- Нажмите Сгенерировать. Результат появится в большом поле: короткие серии разделены пробелами, а начиная с 21 числа — запятыми.
- Кнопка Копировать кладёт весь результат в буфер обмена — удобно вставить в тему Discord или в чат стрима как пруф.
Диапазоны, которые нужны чаще всего
Почти любая задача, которая начинается со слов «выбери случайно…», сводится к диапазону и количеству. Вот настройки для самых частых случаев.
| Что нужно | Минимум | Максимум | Сколько | Без повторов |
|---|---|---|---|---|
| Да / нет, кто ходит первым | 1 | 2 | 1 | выкл |
| Бросок кубика | 1 | 6 | 1 | выкл |
| Процентный ролл на случайное событие | 1 | 100 | 1 | выкл |
| Один победитель из 240 заявок | 1 | 240 | 1 | выкл |
| Три победителя из тех же 240 заявок | 1 | 240 | 3 | вкл |
| Случайная игра из библиотеки на 87 позиций | 1 | 87 | 1 | выкл |
| Шесть чисел для лотерейного билета | 1 | 49 | 6 | вкл |
| Случайная карта из пула на 7 штук | 1 | 7 | 1 | выкл |
| Случайный слот оружия для челленджа | 1 | 5 | 1 | выкл |
| Четырёхзначный код | 1000 | 9999 | 1 | выкл |
Со всем, что не является числом — именами, командами, играми, фантами, — работает один приём: сначала пронумеруйте список. Строка 1, строка 2, строка 3, дальше тянете число в этом диапазоне. Генератор вашего списка не видит, и именно поэтому его нельзя обвинить в симпатии к другу автора.
Как разыграть приз, чтобы потом не спорили
Само по себе случайное число ничего не доказывает. Спор снимает порядок действий, а не красивая цифра.
- Сначала заморозьте список участников и опубликуйте его: список комментариев, таблица, выгрузка — что угодно, что зрители могут пересчитать.
- Пронумеруйте заявки от 1 до N. Один и тот же ник получает один номер, а не три.
- Назовите диапазон и количество до розыгрыша: «от 1 до 240, три победителя, без повторов». Подозрения вызывает как раз объявление постфактум.
- Пишите экран или тяните в прямом эфире. Генератор работает в браузере и ничего не сохраняет, поэтому доказательством служит ваша запись, а не наш сервер.
- Публикуйте числа вместе с совпавшими именами.
Шансы считаются проще, чем кажется. При одном победителе у каждой заявки шанс 1/N: 1% при 100 участниках, около 0,42% при 240, 0,1% при 1000. Три победителя с включённой галочкой «без повторов» увеличивают шанс участника примерно втрое — около 1,25% из 240, — потому что после каждого извлечения оставшийся пул номеров уменьшается.
| Заявок | Шанс заявки (1 победитель) | Шанс заявки (3 победителя, без повторов) |
|---|---|---|
| 50 | 2% | 6% |
| 100 | 1% | 3% |
| 240 | 0,42% | 1,25% |
| 1000 | 0,1% | 0,3% |
Откуда берутся числа
Генератор вызывает crypto.getRandomValues() — тот самый Web Crypto API, которым браузер создаёт ключи шифрования. Он заполняет 32-битную ячейку непредсказуемыми битами: зерна, которое можно угадать, нет, повторяющегося цикла, который можно переждать, тоже нет.
Но сырые биты сами по себе ещё не честный диапазон. У 32-битного значения 2^32 = 4 294 967 296 состояний, и это число редко делится на размер вашего диапазона нацело. Возьмём 1–100: 2^32 даёт остаток 96, и простое значение % 100 подарило бы первым 96 числам по одному лишнему шансу. Лечится отбраковкой (rejection sampling): любое сырое значение, попавшее в этот «хвост», выбрасывается, и берётся новое. Для диапазона 1–100 такое случается примерно раз на 45 миллионов, задержки вы не заметите, зато доля у всех чисел получается одинаковой.
Диапазоны, размер которых — степень двойки (1–2, 1–8, 1–256), делятся ровно и переброса вообще не требуют. Все остальные требуют, поэтому проверка стоит всегда.
Обычная альтернатива, Math.random(), — псевдослучайный генератор: быстрый, годится для фоновой анимации, но у него есть зерно, а выдача — детерминированная последовательность. Там, где на кону приз, это неподходящий инструмент.
И сразу о границе применения: генератор для паролей и ключей шифрования не предназначен. Источник случайности здесь тот же самый, но пароль — это не одно число, а строка с требованиями к длине и набору символов, и собирать её вручную из выпавших чисел бессмысленно. Наша задача — честный розыгрыш чисел в заданном диапазоне.
Повторы: когда включать галочку
Если без повторов выключено, каждое число — независимое извлечение, как повторный бросок того же кубика. Совпадения тут не поломка, а нормальный вид случайности, и появляются они гораздо раньше, чем ожидается.
| Тянем | Диапазон 1–100 | Диапазон 1–1000 |
|---|---|---|
| 5 чисел | 9,7% | 1,0% |
| 10 чисел | 37,2% | 4,4% |
| 20 чисел | 87,0% | 17,4% |
| 25 чисел | 96,2% | 26,1% |
| 40 чисел | больше 99,9% | 54,6% |
В таблице — вероятность того, что хотя бы два числа в выборке совпадут. Двадцать чисел из сотни повторяются почти в девяти случаях из десяти: это тот же парадокс дней рождения, который удивляет людей в классе из тридцати человек.
С включённой галочкой все числа в результате разные. Если попросить больше чисел, чем помещается в диапазон — 60 уникальных значений от 1 до 50, — инструмент просто выдаст весь диапазон, 50 чисел в случайном порядке. Кстати, это самый быстрый способ перемешать пронумерованный список: диапазон от 1 до N, количество N, галочка включена, и результат сверху вниз — ваш новый порядок.
Ролл на лут, челленджи и домашние правила
Задолго до ботов для розыгрышей игроки решали споры роллом. Правило пережило все MMO, которые его придумали: все кидают в одном диапазоне, предмет забирает наибольшее число, а при равенстве перебрасывают только те, у кого совпало.
Как провести ролл здесь: поставьте диапазон 1–100, количество 1 и либо дайте каждому нажать «Сгенерировать» на своём экране, либо киньте за всех сами и выложите список по порядку. Две привычки избавляют от споров: диапазон называется до первого ролла, а при равенстве идёт переброс, а не дележ приза. И ролл вчерашнего вечера не считается сегодня — устаревшее число проще всего оспорить.
То же поле закрывает и мелкие решения, из которых складывается вечер.
| Диапазон | Что означает число | Пример |
|---|---|---|
| 1–100 | Ролл на лут, забирает наибольший | Двое хотят один и тот же дроп |
| 1–7 | Позиция в пронумерованном пуле карт | На какой карте играем следующий матч |
| 1–5 | Слот оружия или сборки | Играете раунд с тем, что выпало |
| 1–10 | Насколько жёсткий челлендж вы себе ставите | 10 — без прицела, без приседа и без связи |
| 1–20 | Номер в заранее написанном списке заданий | Сначала пронумеруйте список, потом тяните |
| 1–4 | Кто закупает, кто скидывает, кто колит | Четверо игроков, одна обязанность |
Схема всегда одна и та же: превратить вопрос в пронумерованный список, кинуть внутри этого списка и принять результат. Число даёт генератор, а честность появляется в момент, когда все заранее согласились с диапазоном.
Чем наш инструмент лучше
- Криптографическая случайность с отбраковкой, полностью описанная выше, вместо расплывчатого значка «честная игра».
- До 1000 чисел за один розыгрыш и режим без повторов, который заодно работает как перемешивание списка.
- Отрицательные и перевёрнутые диапазоны обрабатываются, а не роняют инструмент в ошибку.
- Одна кнопка «Копировать» отдаёт весь результат текстом — для сообщения в Discord или поста с итогами конкурса.
- Без аккаунта, без капчи, без рекламы поверх кнопки, страница работает с телефона.
Чего инструмент намеренно не делает: не хранит историю между перезагрузками, не запоминает списки имён и не имеет режима «с весами» или «на удачу». Взвешенный розыгрыш — это уже не случайный розыгрыш, а история, пережившая обновление страницы, означала бы отправку ваших чисел куда-то наружу.
Конфиденциальность
Всё происходит внутри браузера. Диапазон, количество и выпавшие числа никуда не отправляются, аккаунта нет, журнала нет — значит, никто, включая нас, не может посмотреть или подменить ваш результат. Обновили страницу — прошлый результат исчез навсегда, поэтому для публичного розыгрыша правильное доказательство — запись экрана.
Вопросы и ответы
Числа действительно случайные?
Инструмент использует crypto.getRandomValues() — криптографический генератор браузера — плюс отбраковку, которая убирает смещение от остатка деления. У каждого числа диапазона строго одинаковый шанс, это не последовательность Math.random() с зерном.
Как выбрать победителя розыгрыша?
Пронумеруйте участников от 1 до N, поставьте минимум 1, максимум N, количество 1 и нажмите «Сгенерировать». Для нескольких победителей увеличьте количество и включите «без повторов», чтобы один человек не выиграл дважды.
Можно получить числа без повторений?
Да, для этого галочка «без повторов»: все числа в результате будут разными. Если запросить больше чисел, чем есть в диапазоне, вы получите весь диапазон в случайном порядке.
Какой максимальный диапазон и сколько чисел за раз?
В поля минимума и максимума можно вписать любые целые числа, включая отрицательные, а за один клик выдаётся от 1 до 1000 чисел. Дробное значение округляется вниз, а если максимум меньше минимума, границы меняются местами автоматически.
Инструмент помнит прошлые числа?
Нет. Истории нет и ничего не сохраняется: перезагрузка страницы начинает розыгрыш с чистого листа. Если результат нужен, нажмите «Копировать» до ухода со страницы.
Он предскажет числа лотереи?
Нет, и ни один генератор этого не может. Он выдаёт числа с равной вероятностью — это удобно, чтобы выбрать, какие числа отметить, — но сам тираж является независимым событием, и прошлые результаты на следующий не влияют.
Почему одно и то же число выпало дважды подряд?
Потому что независимые извлечения не имеют памяти. В диапазоне 1–6 значение повторяется примерно раз на шесть попыток, и это правильное поведение. Когда повторы недопустимы, включайте «без повторов».