Я был бы признателен, если бы вы поделились этими страницами с друзьями, сохранили их в закладках или ссылались на них. Спасибо! 🙏

Генератор случайных чисел онлайн

Acrafto Team Математика
Обновлено
Быстрые пресеты
Всё работает в вашем браузере. Ни одно число никогда не покидает ваше устройство.

Как работает генератор случайных чисел?

Генератор предлагает два источника случайности, а вы выбираете, какой подходит для задачи.

Криптостойкий режим берёт энтропию из вашей операционной системы через Web Crypto API (crypto.getRandomValues()). Он непредсказуем и невоспроизводим — правильный выбор для настоящей жеребьёвки, результат которой никто не должен угадать заранее.

Режим с seed превращает любой введённый текст в начальное состояние детерминированного генератора (xoshiro128**). Один и тот же seed всегда даёт одни и те же числа, поэтому любой может повторить вашу жеребьёвку и убедиться, что результат именно такой, как вы утверждаете.

Оба режима работают полностью в вашем браузере. Ни одно число никогда не отправляется на сервер.

Без смещения по модулю

Большинство простых генераторов отображают случайное 32-битное значение на ваш диапазон через value % range. Если диапазон не делит 2³² без остатка, наименьшие числа выпадают немного чаще остальных. На тысячах розыгрышей это становится заметным.

Вместо этого генератор использует выборку с отклонением (rejection sampling): значения, попадающие в неравномерный «хвост», отбрасываются и генерируются заново. У каждого числа в диапазоне абсолютно одинаковый шанс выпасть. Проверить это можно самостоятельно с помощью встроенного теста на равномерность.

Что умеет генератор

Диапазон

  • Минимум и максимум — любой целочисленный или дробный диапазон, включая отрицательные значения
  • Количество чисел — от 1 до 1 000 000 за один розыгрыш
  • Без повторений — каждое число появляется не более одного раза, как в настоящей жеребьёвке
  • Сортировка — порядок выпадения, по возрастанию или по убыванию; сортировка никак не влияет на случайность
  • Шаг — ограничить результаты кратными заданному значению, чтобы выпадали только 0, 5, 10, 15
  • Исключить числа — укажите значения, которые никогда не должны выпасть

Режим

  • Источник случайности — криптостойкий (Web Crypto) или с seed (воспроизводимый)
  • Seed — любой текст; один и тот же seed всегда воспроизводит тот же розыгрыш
  • Распределение — равномерное, нормальное (Гаусса), экспоненциальное, Пуассона, треугольное, биномиальное
  • Веса — задайте отдельным числам более высокий шанс выпадения в формате number:weight
  • Игральные кости3d6+2, d20, 2d20kh1 для преимущества, 4d6dl1 для генерации характеристик

Вывод

  • Разделитель — запятая, пробел, точка с запятой, табуляция, новая строка или любой введённый текст
  • Система счисления — десятичная, двоичная, восьмеричная, шестнадцатеричная или по основанию 36
  • Дополнение нулями — превратите 7 в 007 для номеров билетов или идентификаторов
  • Префикс и суффикс — обрамите каждое число фиксированным текстом
  • Шаблон{n} означает число, {i} — его позицию, поэтому user{n} превращается в user42
  • Копировать как — обычный текст, CSV, JSON или таблицу Markdown

Статистика

Каждый розыгрыш сопровождается статистикой в реальном времени: сумма, среднее, медиана, минимум, максимум, стандартное отклонение, а также количество чётных, нечётных и простых чисел. Гистограмма показывает форму распределения, а критерий хи-квадрат позволяет проверить, действительно ли результаты соответствуют равномерному распределению.

История

Последние 50 розыгрышей сохраняются в вашем браузере вместе с настройками, которые их создали, — любой из них восстанавливается одним кликом. Часто используемые конфигурации можно сохранить как именованные пресеты, а всё это экспортировать в JSON-файл и импортировать на другом устройстве. Ничего не хранится нигде, кроме этого браузера.

Клавиатура

Нажмите Пробел или R, чтобы повторить розыгрыш, не отрываясь от клавиатуры.

Быстрые пресеты

ПресетДиапазонКоличествоПрименение
🎲 Кости1–61Настольные игры, принятие решений
🪙 Монета0–11Орёл или решка
🎰 Лотерея1–496Уникальные, отсортированные, как в настоящей жеребьёвке
💯 1–1001–1001Проценты, A/B-разбиения
🔢 PIN-код0–94Четыре цифры, повторения разрешены

Воспроизводимые розыгрыши

Режим с seed нужен для случаев, когда фразы «поверьте, это было случайно» недостаточно.

Выберите seed, с которым заранее согласны все участники, — дату, хэштег, цену закрытия какого-нибудь публичного показателя — и объявите его до начала розыгрыша. После этого любой человек может ввести тот же seed с теми же настройками и получить идентичный результат. Вы не доказываете, что числа были непредсказуемы; вы доказываете, что не перезапускали розыгрыш, пока не понравился результат.

Так же можно сделать случайность воспроизводимой в работе, которую нужно проверять: план выборки, который коллега может повторить, набор тестовых фикстур, остающийся стабильным во всём наборе тестов, или классное задание, где у каждого ученика одинаковые «случайные» данные.

Выбор распределения

Равномерное даёт каждому числу в диапазоне одинаковый шанс. Именно это обычно имеют в виду под словом «случайное», и это распределение используется по умолчанию.

Остальные распределения группируют результаты вокруг некоторого значения — так обычно ведут себя реальные величины:

  • Нормальное (Гаусса) — рост, ошибки измерений, результаты тестов. Задайте среднее значение и стандартное отклонение.
  • Экспоненциальное — время ожидания между независимыми событиями.
  • Пуассона — количество событий за фиксированный интервал: прибытий в час, дефектов в партии.
  • Треугольное — когда известны минимум, максимум и наиболее вероятное значение, но ничего больше. Часто применяется в оценках проектов.
  • Биномиальное — число успехов при фиксированном количестве испытаний с фиксированной вероятностью.

Каждое распределение обрезается по заданному диапазону, поэтому длинный «хвост» нормального распределения не может выйти за пределы минимума и максимума.

Где применяются случайные числа

Игры и развлечения

  • Настольные игры — броски костей, определение очерёдности ходов
  • Настольные RPG4d6dl1 для характеристик персонажа, 2d20kh1 для преимущества
  • Розыгрыши призов — выбор победителя с seed, чтобы участники могли проверить результат
  • Викторины — случайный порядок вопросов

Статистика и наука

  • Выборка — отбор образцов из совокупности без повторений
  • A/B-тестирование — распределение участников по группам
  • Моделирование Монте-Карло — оценка вероятности через повторение
  • Бутстрап — повторная выборка для оценки неопределённости

Разработка

  • Тестовые данные — миллион значений, генерируемых в фоновом режиме, чтобы страница оставалась отзывчивой
  • Фикстуры — с seed, чтобы падающий тест падал одинаково при повторных запусках
  • Случайные ID — с дополнением нулями, префиксами или шаблоном
  • Нагрузочное тестирование — шаблонные идентификаторы вроде user{n}@example.com

Истинно случайные и псевдослучайные числа

Math.random()crypto.getRandomValues()С seed (xoshiro128**)
ТипПсевдослучайноеКриптографически стойкоеПсевдослучайное, детерминированное
Источник энтропииSeed, выбранный движкомСистемный CSPRNGВаш текст seed
Предсказуемо?Потенциально даНетДа, по замыслу
Воспроизводимо?НетНетВсегда
Подходит для безопасностиНетДаНет
Подходит для статистикиЗависитДаДа
Подходит для проверяемых розыгрышейНетНетДа

Math.random() в этом инструменте не используется нигде.

Розыгрыши без повторений

При включённой опции Без повторений каждое число из диапазона появляется не более одного раза. Идеально подходит для:

  • Розыгрышей призов — никто не может выиграть дважды
  • Перестановок — перемешивания набора элементов
  • Бинго — объявления чисел, которые больше не повторяются
  • Лотерей — шесть различных чисел от 1 до 49

Розыгрыш использует частичную перетасовку Фишера — Йейтса, поэтому запрос 6 чисел из миллиона выполняется так же быстро, как запрос 6 из 49 — генератор никогда не крутится в цикле в надежде избежать коллизии. Если запрошено больше уникальных чисел, чем может дать диапазон, генератор сообщит об этом, а не зависнет.

Экспорт результатов

Скопируйте числа как обычный текст с любым разделителем, как CSV для таблиц, как JSON для кода или как таблицу Markdown для документации. Очень большие розыгрыши полностью хранятся в памяти и копируются целиком, даже если на экране отображаются только первые пару тысяч значений.

Генерация случайных чисел в собственном коде

JavaScript / TypeScript

// Криптографически стойкое целое число в диапазоне [min, max], без смещения по модулю.
// Наивный вариант `value % range` даёт перевес низким числам, если range
// не делит 2**32 без остатка — поэтому мы отбрасываем значения из неравномерного хвоста.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}

Python

import random
import secrets

# Криптографически стойкое, без смещения по модулю
n = secrets.randbelow(max - min + 1) + min

# Воспроизводимо: один и тот же seed всегда даёт одну и ту же последовательность
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Без повторений
sample = random.sample(range(min, max + 1), count)

PHP

// Криптографически стойкое (PHP 7+), без смещения по модулю
$n = random_int($min, $max);

// Воспроизводимо
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);

Часто задаваемые вопросы (FAQ)

Результат действительно случаен? В криптостойком режиме — да. Числа получаются через crypto.getRandomValues(), криптографически стойкий генератор, использующий пул энтропии операционной системы. Результаты равномерно распределены и непредсказуемы. Режим с seed намеренно устроен наоборот: он воспроизводим, в этом и есть его смысл.
Сколько чисел можно сгенерировать за раз? До 1 000 000. Розыгрыши свыше 50 000 вычисляются в фоновом воркере, чтобы страница оставалась отзывчивой, а на экране показываются первые 2 000 чисел с указанием количества остальных — при копировании вы всё равно получаете полный результат.
Можно ли генерировать отрицательные числа? Да. Установите отрицательный минимум. Поддерживается весь диапазон чисел JavaScript, включая отрицательные значения с обеих сторон.
Влияет ли сортировка на случайность? Нет. Числа сначала генерируются, а затем сортируются. Сортировка меняет только порядок отображения.
Даст ли тот же seed те же числа завтра? Да, и на любом другом устройстве или в другом браузере. Генератор с seed полностью детерминирован и зависит только от seed и настроек.
Что показывает тест на равномерность? Он выполняет критерий хи-квадрат, сравнивая, как часто каждое число выпадало на самом деле, с тем, как часто оно должно было выпадать. Если статистика остаётся ниже критического значения, результаты согласуются с равномерным распределением. Для содержательного вывода нужен достаточно узкий диапазон и достаточное количество розыгрышей — не менее пяти на каждое возможное значение.
Как работают веса? Задайте их в виде пар number:weight, например 1:5, 2:1, 3:1. В этом примере 1 выпадает в пять раз чаще, чем 2 или 3. Числа, которые вы не указали, получают вес ноль и никогда не выпадают.
Какая нотация игральных костей поддерживается? 3d6 означает бросок трёх шестигранных костей. Добавьте модификатор через 3d6+2. Оставляйте или отбрасывайте кости с помощью kh, kl, dh, dl — так, 2d20kh1 оставляет наибольший результат из двух d20 (преимущество), а 4d6dl1 отбрасывает наименьший результат из четырёх d6.
Хранится ли моя история где-либо? Только в этом браузере, в локальном хранилище. Она никогда не отправляется на сервер, не синхронизируется с другими устройствами и исчезает при очистке данных сайта. Экспортируйте её в JSON, если хотите сохранить или перенести.