Рандомайзер чисел нужен чаще, чем кажется: выбрать победителя розыгрыша в Telegram-канале, решить, кто моет посуду, бросить кубик, когда настоящий потерялся. Задай диапазон — например, от 1 до 312, если в конкурсе на приз в 5000 ₽ участвует 312 комментаторов, — и генератор случайных чисел онлайн сразу выдаст номер победителя. Без регистрации, прямо в браузере. Удобно и для честных розыгрышей во ВКонтакте: опубликуй диапазон вместе с результатом, и спорить будет не о чем.
Что делает генератор случайных чисел?
Генератор выбирает одно или несколько случайных целых чисел из диапазона, который ты задаёшь. Укажи минимум, максимум и сколько чисел нужно — и инструмент вернёт именно столько целых чисел. Каждое выбирается независимо, с возвращением (повторы возможны) и равномерно по всему диапазону.
Например, Min = 1, Max = 100, Количество = 5 — и ты получишь что-то вроде 34, 91, 12, 78, 43. Нажми ещё раз — числа поменяются. Min и Max входят в диапазон: оба крайних значения могут выпасть. Min должен быть меньше Max. За одну генерацию можно получить не больше 100 чисел. Сам диапазон может быть огромным: разница между Max и Min должна укладываться примерно в 9 квадриллионов (2⁵³) — этого хватит кому угодно.
Всё работает прямо в браузере, регистрация не нужна. Инструмент использует Math.random() из JavaScript — псевдослучайный алгоритм, которого с запасом хватает для повседневных задач (розыгрыши, выборки, игры, решения), но не для криптографии вроде генерации паролей или подписи токенов.
Когда пригодятся случайные числа
Случайные числа нужны в быту чаще, чем принято думать. Самые частые случаи:
Выбрать победителя из списка. В розыгрыше 47 участников, нужен один. Ставишь Min = 1, Max = 47, Количество = 1 — инструмент возвращает номер победителя. (Если хочешь перемешивать сразу имена, удобнее Перемешиватель списка, но для розыгрыша по номерам — например, по номерам билетов — подходит именно этот инструмент.)
Статистическая выборка. У тебя 500 записей о клиентах, и нужно вручную проверить 50 из них. Сгенерируй 50 случайных чисел от 1 до 500 — это номера строк для проверки (повторы просто пропусти и догенерируй недостающие). Так опросы, аудиты качества и проверки контента остаются непредвзятыми: никто не выбирает любимчиков.
Настольные игры и НРИ. Нужно бросить d20? Min = 1, Max = 20, Количество = 1. Нужно бросить 4d6 для персонажа в D&D? Min = 1, Max = 6, Количество = 4. Инструмент заменит даже кубики, которых физически не существует (d17, d100, d743 — без проблем).
Тестовые данные. Нагружаешь базу данных, заполняешь макет интерфейса или ставишь заглушки? Случайные числа в нужном диапазоне подойдут для возрастов, цен, ID, баллов или количеств, пока ты прототипируешь.
Разрешить дружеский спор. Двое, один кусок пиццы. Каждый загадывает число от 1 до 10, у кого ближе — тот и ест. Инструмент проводит жеребьёвку, и никому не нужно честно признаваться, что он загадал.
A/B-тесты. Генерируй 0 или 1 для каждого пользователя, чтобы распределить их в группу A или B поровну. Для неравного разделения (например, 70/30) генерируй от 1 до 100: 1–70 идут в A, 71–100 — в B.
Насколько «случайны» эти числа на самом деле
Инструмент использует Math.random(), который движки JavaScript реализуют как генератор псевдослучайных чисел (ГПСЧ). Псевдослучайный значит: алгоритм детерминирован — из одного и того же внутреннего состояния получится та же последовательность, — но это состояние при запуске засевается из источника энтропии системы, поэтому разные загрузки страницы дают несвязанные последовательности.
Для повседневных задач — игры, выборки, решения, розыгрыши — Math.random() более чем достаточно случаен. Его вывод проходит статистические тесты на равномерность на миллионах значений, и по предыдущему числу нельзя предсказать следующее, не взломав сам движок JavaScript.
Для чего он НЕ подходит: для криптографии. Пароли, ключи шифрования, токены сессий — всё, где опытный атакующий может выиграть, предсказав результат, — требуют криптографически стойкого ГПСЧ (CSPRNG). Для паролей используй Генератор паролей — он работает на crypto.getRandomValues().
Два практических следствия:
- Повторы возможны. Каждое число выбирается независимо. Если генерируешь 5 чисел из диапазона в 10, одно и то же число часто выпадет дважды — так и должно быть, это не баг. Инструмент не умеет выдавать числа без повторов: даже если поставить Количество = (Max − Min + 1), часть чисел повторится, а часть не выпадет вовсе. Нужен перемешанный порядок без повторов — выпиши числа списком и перемешай их в Перемешивателе списка.
- Распределение равномерное, а не «естественное». У каждого целого числа в диапазоне ровно одинаковый шанс выпасть. Серии из трёх-четырёх чисел подряд из одной половины диапазона при равномерном распределении — норма. Люди обычно воспринимают равномерно-случайный результат как «недостаточно случайный», а скучивания — как «более случайные». Инструмент выдаёт по-настоящему случайные числа; твоя интуиция может с этим не соглашаться.
Вероятность типичных исходов
При одном броске вероятность любого конкретного значения — это 1, делённая на размер диапазона. В таблице — частые сценарии:
| Сценарий | Диапазон | Размер диапазона | Шанс конкретного значения |
|---|---|---|---|
| Подбросить монетку (0 или 1) | 0 – 1 | 2 | 50% |
| Шестигранный кубик | 1 – 6 | 6 | 16,67% |
| Двадцатигранник (D&D) | 1 – 20 | 20 | 5% |
| Случайный процент | 0 – 100 | 101 | 0,99% |
| Лотерейный шар (как в Powerball, 1–69) | 1 – 69 | 69 | 1,45% |
| Четырёхзначный PIN-код | 0 – 9999 | 10 000 | 0,01% |
Для лотерей с несколькими числами (например, «6 из 49») математика другая — тут считаются сочетания, а не вероятность одного числа. Шанс угадать все 6 в любом порядке из 49 — 1 к C(49,6) = 13 983 816, то есть примерно 1 к 14 миллионам. Такие расчёты нужно делать через сочетания, а не через вероятность отдельного числа.
Советы и приёмы
Нужны уникальные числа — бери выборку без возвращения. Генератор выбирает каждое число независимо, поэтому даже 50 чисел из диапазона 1–50 почти наверняка дадут повторы, и ограничение в 100 чисел за раз тоже никуда не денется. Если нужно 10 уникальных чисел от 1 до 50, выпиши числа от 1 до 50 списком, перемешай их в Перемешивателе списка и возьми первые 10. Либо генерируй по одному и пропускай повторы.
Нужен взвешенный результат — растяни диапазон. Хочешь шанс 70/30 для «да» и «нет»? Генерируй от 1 до 100: если выпало 1–70 — «да», иначе — «нет». Тот же приём работает для любого процента — просто подбери размер диапазона под нужную точность.
Помни про «парадокс дней рождения». Сгенерируй 23 числа от 1 до 365 (дни рождения в году) — и с вероятностью около 50% два из них совпадут. Это не баг — именно поэтому совпадение «у двоих в комнате один день рождения» встречается куда чаще, чем кажется. Полезно помнить, когда при выборке тебя удивит повтор.
Публикуй диапазон вместе с результатом. «Выпало 17» ничего не значит, если не знать, что диапазон был 1–20. Когда объявляешь результат публично (победитель розыгрыша, решение спорного момента), указывай и параметры, и результат — так всё прозрачно.
Похожие генераторы
Генератор случайных чисел хорошо сочетается с другими инструментами Microapp — смотря что ты рандомизируешь:
- Чтобы перемешать настоящий список имён или вещей (без перевода их в номера), используй Перемешиватель списка — он перемешивает список, а ты берёшь сверху сколько нужно.
- Чтобы подбросить виртуальную монетку (орёл или решка, с анимацией), есть Подбросить монету — та же идея в более дружелюбном интерфейсе для решения «0 или 1».
- Для бросков нескольких кубиков с модификаторами в духе НРИ (4d6+2, бросок с преимуществом и т. п.) Бросок кубиков понимает такую запись напрямую.
- Для криптографически стойких паролей (для которых Math.random() не годится) Генератор паролей использует правильный криптографический API.
- Для уникальных идентификаторов для тестов, моков или временных токенов Генератор UUID выдаёт стандартные UUID версии 4.
Частые вопросы
Результат действительно случайный?
Он псевдослучайный. Числа выдаёт Math.random() — алгоритм, засеянный из источника энтропии твоего браузера. Для повседневных задач (выборки, игры, решения, розыгрыши) последовательность на практике непредсказуема, но технически детерминирована: зная начальное состояние, её можно повторить. Для криптографической случайности (когда опытный атакующий может попытаться предсказать последовательность) используй инструменты на crypto.getRandomValues(), например Генератор паролей.
Почему одно и то же число иногда выпадает дважды?
Потому что каждое число выбирается независимо. Если генерировать 5 чисел от 1 до 10, два из них часто совпадут — так и задумано. Независимые случайные выборки не избегают повторов, как колода карт. Чтобы выбрать без возвращения (без повторов), перемешай диапазон и возьми первые N значений — например, через Перемешиватель списка.
Можно генерировать отрицательные числа или дроби?
Отрицательные — да: поставь Min отрицательным (например, Min = −10, Max = 10). Инструмент вернёт целые числа от −10 до 10 включительно. Дроби — нет: инструмент выдаёт только целые числа. Для случайных дробей обычно генерируют целое в более широком диапазоне и делят его — или пишут пару строк кода.
Какой максимальный диапазон?
JavaScript безопасно работает с целыми числами до 2⁵³ − 1 (около 9 квадриллионов). Пока разница между Max и Min не выходит за эту границу, все числа диапазона доступны. Количество ограничено 100 числами за генерацию, чтобы интерфейс не тормозил. Нужно больше — запусти несколько раз.
Могут ли два человека, запустив инструмент одновременно, получить одинаковые числа?
Нет. Каждый браузер засевает свой ГПСЧ независимо из локальной энтропии системы, поэтому два одновременных запуска дают несвязанные последовательности. Общего состояния между пользователями нет.
Результат честный? Может быть перекос?
В пределах возможностей Math.random() — честный: распределение равномерное, то есть у каждого целого в диапазоне одинаковый шанс выпасть. Инструмент использует стандартную формулу Math.floor(Math.random() * (max - min + 1)) + min, которая обходит перекос остатка от деления (modulo bias) — частую тонкую ошибку при генерации случайных целых.
Инструмент где-то сохраняет мои числа?
Нет. Генерация идёт полностью в твоём браузере. Числа не отправляются на сервер, не пишутся в логи и не сохраняются. Закрыл вкладку — результат пропал. Если нужна запись розыгрыша (например, для проверки), сделай скриншот или скопируй результат, прежде чем уйти со страницы.