Нужен быстрый и честный способ получить случайное число? Этот бесплатный онлайн-генератор случайных чисел выдаёт одно число — или целый список чисел — в любом выбранном вами диапазоне, от простого диапазона от 1 до 10 до диапазонов, охватывающих миллиарды. Задайте минимальное и максимальное значение в полях «Мин» и «Макс», выберите нужное количество чисел в поле «Количество» и нажмите «Сгенерировать». Обе границы включены, поэтому диапазон от 1 до 10 может вернуть и 1, и 10.
Каждый результат создаётся прямо в вашем браузере с помощью Web Crypto API (crypto.getRandomValues) — который получает криптографически стойкие случайные значения из источника случайности операционной системы. Ничего не отправляется на сервер, ничего не логируется, и мы никогда не видим ваши числа. Генерация происходит мгновенно, приватно и продолжает работать на медленном соединении после загрузки страницы.
Опции созданы для тех ситуаций, в которых людям действительно нужны случайные числа. Включите «Без повторений», чтобы ни одно число не появлялось дважды — именно то, что нужно для розыгрышей, лотерей или разделения людей на группы без повторов. Нужно двадцать победителей из 500 участников? Задайте «Мин» равным 1, а «Макс» равным 500, включите «Без повторений», задайте «Количество» равным 20 и нажмите «Сгенерировать». «Порядок сортировки» располагает результат по возрастанию или по убыванию, а одна кнопка копирует все результаты. Когда вы переключаете «Формат результата» с «С новой строки» на «Через пробел» или «Через запятую», появляется «Количество наборов»: несколько независимых наборов сразу — например, двадцать наборов по 3 числа для двадцати раундов розыгрыша — а «Разрешить повторы между наборами» определяет, может ли одно и то же число появиться в более чем одном из них.
Как на самом деле возникает случайность? Ваш браузер выдаёт криптографически стойкие случайные значения через Web Crypto API, а не через JavaScript-PRNG вроде Math.random(). Когда вы нажимаете «Сгенерировать», страница запрашивает случайные значения с помощью crypto.getRandomValues и использует их для создания чисел в выбранном диапазоне. Источник случайности предоставляется операционной системой, поэтому странице не нужно хранить собственное зерно (seed) или псевдослучайную последовательность.
Преобразование сырого значения в ваш диапазон — именно то место, где генераторы незаметно ошибаются, и это заслуживает отдельного абзаца. Взять значение по модулю размера диапазона — очевидный способ, и он же смещённый: если диапазон не делится ровно на 2^32, самые маленькие числа выпадают чуть чаще остальных. Эта ошибка называется modulo bias, и она измерима, а не просто теоретична. Этот генератор вместо этого отбрасывает любое значение сверх наибольшего точного кратного диапазона и генерирует заново — техника, которая называется rejection sampling. Это стоит нескольких дополнительных попыток, но взамен даёт точную гарантию: у каждого числа между «Мин» и «Макс» точно одинаковая вероятность, а не почти одинаковая.
Что делает число по-настоящему случайным? Число достаточно случайно, когда предыдущие результаты ничего не говорят о следующем — а на практике существует три уровня этого. Обычная псевдослучайная функция вроде Math.random() выполняет детерминированный алгоритм: тот, кто знает её внутреннее состояние, может воспроизвести всю последовательность, что отлично подходит для перемешивания слайд-шоу, но не годится ни для чего, где результат не должен быть предсказуемым. Криптографически стойкий генератор (CSPRNG) — уровень, который использует этот инструмент — тоже алгоритм, но он спроектирован так, чтобы выдавать непредсказуемые значения из надёжного источника системной случайности, и построен так, что наблюдение за его результатом ничего не раскрывает о том, что будет дальше. Физическая случайность — из таких источников, как атмосферный шум или радиоактивный распад, — стоит выше обоих уровней, хотя практическая разница исчезает, когда речь идёт о том, чтобы вытянуть число из диапазона. Именно поэтому браузеры предлагают отдельный крипто-API вместо того, чтобы просто улучшать Math.random(): эти два решения решают разные задачи, и безопасно только одно из них, когда результат для кого-то важен.
Случайная последовательность не обязана выглядеть случайной для людей. Вытяните десять чисел от 1 до 10, и вы регулярно будете видеть повторения вроде 7, 7, 8, или короткую серию, в которой подряд выпадают высокие значения — и каждая из этих ситуаций совершенно нормальна. Настоящая случайность непредсказуема и не обязана выглядеть равномерно распределённой для человека: каждый розыгрыш независим, предыдущие числа не оказывают абсолютно никакого влияния на следующие, и ни одно число никогда не «должно» выпасть больше, чем другое. Инстинкт, который утверждает обратное, — это ошибка игрока, и это тот же самый инстинкт, который делает из людей плохие генераторы чисел — когда нас просят придумать случайную последовательность, мы избегаем повторов и распределяем значения намного равномернее, чем это когда-либо делает случайность. Результат, который выглядит подозрительно аккуратным, — это отпечаток человека; настоящая случайность создаёт скопления.
Почему стоит выбрать этот генератор случайных чисел?
- Генерация только в браузере: числа создаются на вашем устройстве и никуда не отправляются
- Случайность через Web Crypto API: криптографически стойкая, а не Math.random()
- Без modulo bias: rejection sampling делает каждое число в диапазоне одинаково вероятным
- Любой диапазон: от 1 до 10 до значений, охватывающих миллиарды, обе границы включены
- Режим «Без повторений»: получите список без повторов для розыгрышей и разделения на группы
- Несколько наборов: несколько независимых наборов одним кликом
- Сортировка и форматы результата: по возрастанию или по убыванию, с новой строки, пробелы или запятые
- История и сохранение в файл: сохраните результаты розыгрыша, которые при необходимости можно будет предъявить или объяснить
- Неограниченно и бесплатно: без регистрации, без ограничений по использованию, ничего не хранится на наших серверах
Случайные числа встречаются в куда большем числе мест, чем думает большинство людей. Учителя вызывают учеников, никого не выделяя. Стримеры и маркетологи разыгрывают победителей конкурсов и розыгрышей перед аудиторией, которая должна доверять результату. Игроки заменяют потерянный кубик или определяют, кто ходит первым, а на турнирах разыгрывают стартовый порядок. Исследователи выбирают случайную выборку, чтобы их результаты можно было распространить и на тех, кто не участвовал. Разработчики генерируют тестовые данные, инициализируют симуляции с помощью seed и выбирают идентификаторы во время QA. Общая черта — случайный процесс отбора, который можно объяснить впоследствии: поскольку розыгрыш использует криптографическую случайность и происходит полностью на вашем устройстве, вы можете показать, как получился результат, если кто-то усомнится в нём.
У этого генератора есть несколько честных ограничений, о которых стоит знать. Режим «Без повторений» не может выдать больше чисел, чем содержит диапазон: двадцати уникальных значений между 1 и 10 просто не существует. Розыгрыши независимы, и предыдущие результаты не влияют на следующие, поэтому обновление страницы не сбрасывает никакой цикл — цикла, в котором можно было бы находиться, попросту нет. И хотя числа криптографически стойкие, розыгрыш здесь — это честный выбор, а не предсказание: официальные тиражи лотерей используют собственное физическое или сертифицированное оборудование, и то, что вычисляется в вашем браузере, не имеет к ним никакого отношения. В рамках этих ограничений гарантия тем сильнее: у каждого числа в вашем диапазоне точно одинаковый шанс при каждом розыгрыше.