Обновлено:

Случайное число

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

Параметры генерации

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

Генератор случайных чисел — инструмент для получения непредсказуемых числовых значений в заданном диапазоне. Используется в играх, розыгрышах, научных расчётах, программировании, криптографии и статистике. Онлайн-генератор избавляет от необходимости писать код или использовать физические методы (кости, монеты).

Случайные числа делятся на два типа:

Большинство онлайн-генераторов работают на псевдослучайных алгоритмах с высоким качеством распределения.

Как пользоваться генератором

Основные параметры

  1. Минимальное значение — нижняя граница диапазона (может быть отрицательным)
  2. Максимальное значение — верхняя граница диапазона
  3. Количество чисел — сколько случайных чисел сгенерировать за один раз
  4. Уникальность — исключить повторяющиеся значения (количество ограничено размером диапазона)
  5. Сортировка — упорядочить результат по возрастанию или убыванию

Шаги генерации

  1. Укажите диапазон: от какого до какого числа нужны значения
  2. Выберите количество чисел (для уникальных: не больше, чем максимум − минимум + 1)
  3. Настройте дополнительные опции (уникальность, сортировка)
  4. Нажмите «Сгенерировать» — результат появится мгновенно
  5. Скопируйте числа или повторите генерацию для нового набора

Пример: диапазон от 1 до 100, количество 10, уникальные — получите 10 неповторяющихся чисел от 1 до 100.

Алгоритмы генерации

Псевдослучайные генераторы

Linear Congruential Generator (LCG)

Простейший алгоритм:

X(n+1) = (a × X(n) + c) mod m

Быстрый, но имеет предсказуемую периодичность. Не рекомендуется для криптографии.

Mersenne Twister (MT19937)

Современный алгоритм с периодом 2¹⁹⁹³⁷ − 1:

Xorshift

Быстрый алгоритм на битовых операциях:

X ^= X << 13
X ^= X >> 17
X ^= X << 5

Компактный код, высокая скорость, достаточное качество для игр и симуляций.

Криптографически стойкие генераторы

Web Crypto API (JavaScript)

crypto.getRandomValues(array);

Использует системные источники энтропии (шум оборудования, время, события), подходит для паролей и токенов.

CSPRNG (Cryptographically Secure Pseudo-Random Number Generator)

Алгоритмы: Fortuna, Yarrow, /dev/urandom (Linux). Невозможно предсказать следующее значение, даже зная предыдущие.

Настройка диапазона

Целые числа

Стандартный диапазон: [min, max] включительно.

Формула преобразования от [0, 1) к [min, max]:

результат = min + floor(случайное × (max − min + 1))

Примеры:

Вещественные числа

Для диапазона [min, max] с дробной частью:

результат = min + случайное × (max − min)

Без округления — результат с плавающей точкой.

Пример: от 0.0 до 1.0 с точностью 2 знака → round(random() × 100) / 100.

Отрицательные числа

Генератор работает с отрицательными значениями аналогично положительным:

Укажите отрицательное значение в поле минимума, система автоматически рассчитает диапазон.

Уникальные случайные числа

Алгоритм Фишера-Йейтса (Fisher-Yates Shuffle)

Для генерации N уникальных чисел из диапазона:

  1. Создать массив всех чисел диапазона
  2. Перемешать массив:
    для i от n−1 до 1:
        j = случайное от 0 до i
        поменять местами элементы[i] и элементы[j]
    
  3. Взять первые N элементов

Сложность: O(n) по времени и памяти, где n — размер диапазона.

Метод исключения повторов

Для небольшого количества уникальных чисел:

  1. Генерировать случайное число
  2. Проверить, есть ли в списке результатов
  3. Если нет — добавить, если да — повторить шаг 1
  4. Повторять, пока не наберётся нужное количество

Эффективность: хорошо работает, если количество << размер диапазона. При большом проценте выборки (>50%) лучше использовать перемешивание.

Ограничения

Количество уникальных чисел не может превышать размер диапазона:

При попытке запросить больше — система выдаст ошибку или автоматически ограничит количество.

Примеры использования

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

Бросок кубика

Диапазон: 1–6, количество: 1

Результат: 4 (одно случайное число от 1 до 6)

Рулетка (европейская)

Диапазон: 0–36, количество: 1

Результат: 17

Генерация координат карты

Результат: (847, 392) — случайная точка на экране

Лотереи и розыгрыши

Выбор победителя из 100 участников

Диапазон: 1–100, количество: 1, уникальные

Результат: 73 (участник №73 — победитель)

Лотерея «6 из 45»

Диапазон: 1–45, количество: 6, уникальные, сортировка по возрастанию

Результат: 7, 12, 23, 31, 38, 44

Случайный порядок выступлений

Участники: 15 человек (пронумерованы 1–15)

Диапазон: 1–15, количество: 15, уникальные

Результат: 8, 3, 14, 1, 11, 5, 9, 15, 2, 7, 13, 4, 10, 6, 12 — порядок выхода на сцену

Статистика и выборка

Случайная выборка респондентов

Генеральная совокупность: 5000 человек

Размер выборки: 200 человек

Диапазон: 1–5000, количество: 200, уникальные

Результат: 200 уникальных номеров для опроса

A/B-тестирование

Разделить 1000 пользователей на 2 группы:

Программирование и тестирование

Генерация тестовых данных

Возраст пользователей: 18–65 лет

Диапазон: 18–65, количество: 100

Результат: 100 случайных возрастов для тестовой базы

Задержка в скриптах

Случайная пауза от 1 до 5 секунд:

Диапазон: 1000–5000 (миллисекунды), количество: 1

Результат: 3247 мс (пауза 3.247 секунды)

Симуляция бросков монеты

Диапазон: 0–1 (0 = орёл, 1 = решка), количество: 100

Результат: 0, 1, 1, 0, 1, 0, 0, 1... — последовательность 100 бросков

Криптография и безопасность

Генерация PIN-кода

Диапазон: 0000–9999 (или 0–9, 4 раза), количество: 1

Результат: 7283 (четырёхзначный PIN)

Случайная соль для хеширования

Диапазон: 0–255, количество: 16 (16 байт)

Результат: 142, 89, 201, 7, 254, 33, 118, 176, 12, 88, 193, 45, 67, 230, 19, 104

Преобразовать в шестнадцатеричный формат: 8E59C907FE2176B00C58C12D43E61368

Временный токен

Диапазон: большие числа (например, 100000–999999), количество: 1

Результат: 472839 (шестизначный код подтверждения)

Проверка качества генератора

Статистические тесты

Критерий хи-квадрат (χ²)

Проверяет равномерность распределения:

  1. Разделить диапазон на интервалы
  2. Сгенерировать большое количество чисел (например, 10 000)
  3. Подсчитать частоту попадания в каждый интервал
  4. Сравнить наблюдаемые и ожидаемые частоты

Формула:

χ² = Σ ((O(i) − E(i))² / E(i))

Если χ² близко к числу интервалов — распределение равномерное.

Тест серий (Runs Test)

Проверяет независимость последовательных значений:

  1. Сгенерировать последовательность
  2. Найти “серии” возрастающих и убывающих участков
  3. Сравнить количество серий с ожидаемым

Слишком мало серий — корреляция между числами, слишком много — чрезмерная изменчивость.

Тест промежутков (Gap Test)

Считает расстояние между повторениями чисел в заданном интервале. Качественный генератор даёт равномерное распределение промежутков.

Тест перестановок

Анализирует порядок следования n последовательных чисел. Для n=3 возможно 6 перестановок (3! = 6), каждая должна встречаться примерно одинаково часто.

Визуальная оценка

График распределения

Постройте гистограмму частот:

Равномерное распределение выглядит как прямоугольник одинаковой высоты.

Диаграмма рассеяния (Scatter Plot)

Для пар (X(i), X(i+1)) постройте точки на плоскости. Качественный генератор даёт равномерное “облако” без видимых структур (линий, кластеров).

Практическая проверка

Монте-Карло: оценка числа π

  1. Генерировать случайные точки (x, y) в квадрате [0, 1] × [0, 1]
  2. Считать, сколько попало в четверть круга (x² + y² ≤ 1)
  3. Отношение: π ≈ 4 × (попавшие / всего)

При 10 000 точек хороший генератор даст π ≈ 3.14 ± 0.02.

Тест “дня рождения”

В группе из 23 человек вероятность совпадения дней рождения ≈ 50%. Сгенерируйте 23 случайных числа от 1 до 365, повторите 1000 раз — совпадения должны быть примерно в 500 случаях.

Применение в различных областях

Научные исследования

Метод Монте-Карло

Моделирование сложных систем с использованием случайных величин:

Генетические алгоритмы

Случайные мутации и кроссоверы для оптимизации:

Стохастическое моделирование

Имитация случайных процессов: погода, финансовые рынки, сетевой трафик.

Образование

Генерация задач и тестов

Изучение вероятности и статистики

Эксперименты с бросанием монет, кубиков, случайными выборками.

Игровая индустрия

Процедурная генерация

Создание уникальных уровней, ландшафтов, персонажей:

Игровая механика

Искусственный интеллект

Непредсказуемость поведения NPC (неигровых персонажей) для реалистичности.

Маркетинг и бизнес

Выборка для опросов

Случайная выборка клиентов для интервью, фокус-групп, A/B-тестирования.

Промо-акции

Прогнозирование

Симуляция сценариев развития бизнеса (метод Монте-Карло для финансовых моделей).

Информационная безопасность

Генерация ключей шифрования

Криптографически стойкие случайные числа для:

Создание паролей и токенов

Защита от атак

Типичные ошибки и решения

Неравномерное распределение

Проблема: использование random() % N для диапазона [0, N−1]

Если размер генератора не кратен N, младшие значения встречаются чаще.

Решение: метод отбрасывания (rejection sampling):

do {
    случайное = rand()
} while (случайное >= (RAND_MAX − (RAND_MAX % N)))
результат = случайное % N

Или использовать готовые функции: random.randint() (Python), Math.random() (JavaScript).

Предсказуемость из-за плохого seed

Проблема: использование текущего времени time() как seed

Атакующий может перебрать возможные значения времени запуска и предсказать последовательность.

Решение: использовать источники высокой энтропии:

Корреляция между числами

Проблема: последовательные числа из LCG могут иметь линейную зависимость

Решение: использовать современные алгоритмы (Mersenne Twister, Xorshift), избегать LCG для критичных задач.

Малый период генератора

Проблема: генератор повторяет последовательность после N итераций

Решение: выбирать алгоритмы с большим периодом (MT19937: 2¹⁹⁹³⁷ − 1).

Недостаточная криптостойкость

Проблема: использование Math.random() для генерации паролей

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

Решение: использовать криптографические генераторы:

Альтернативные методы

Физические генераторы

Радиоактивный распад

Счётчик Гейгера регистрирует моменты распада — истинно случайные события.

Пример: Random.org использует атмосферные шумы.

Тепловой шум

Флуктуации напряжения в резисторе из-за теплового движения электронов.

Квантовые процессы

Измерение поляризации фотонов, квантовая суперпозиция. Используется в квантовой криптографии.

Гибридные методы

Комбинация псевдослучайного генератора с периодическим добавлением энтропии из физических источников.

Пример: /dev/random (Linux) собирает энтропию из событий (движение мыши, нажатия клавиш, сетевые пакеты) и смешивает с CSPRNG.

Таблицы случайных чисел

Исторический метод: заранее сгенерированные таблицы случайных цифр (например, таблицы RAND Corporation, 1 млн случайных цифр). Использовались в статистике до появления компьютеров.

Недостатки: ограниченный объём, неудобство, возможность повторного использования.

Советы по использованию

Выбор диапазона

Количество чисел

Уникальность

Включайте, если:

Отключайте, если:

Проверка результата

Сохранение seed для воспроизводимости

В научных экспериментах и отладке полезно сохранять начальное значение генератора (seed), чтобы повторить ту же последовательность.

Пример (Python):

import random
random.seed(42)  # фиксированный seed
числа = [random.randint(1, 100) for _ in range(10)]
# Всегда получим одинаковую последовательность

Не используйте фиксированный seed в продакшене!

Нормативные и справочные материалы

Стандарты генерации случайных чисел

NIST SP 800-90A/B/C

Рекомендации Национального института стандартов и технологий США по генерации случайных чисел для криптографических применений.

FIPS 140-2/140-3

Федеральный стандарт обработки информации для криптографических модулей, включая требования к генераторам случайных чисел.

ISO/IEC 18031

Международный стандарт по криптографическим методам генерации случайных битов.

Математические основы

Закон больших чисел

При увеличении количества испытаний средняя частота события стремится к его вероятности.

Центральная предельная теорема

Сумма большого числа независимых случайных величин имеет приблизительно нормальное распределение.

Энтропия Шеннона

Мера непредсказуемости случайного источника:

H = −Σ p(i) × log₂(p(i))

Для равномерного распределения на N значениях: H = log₂(N) бит.

Заключение

Генератор случайных чисел — универсальный инструмент для решения широкого спектра задач: от развлечений до научных исследований и криптографии. Выбор подходящего генератора зависит от требований к качеству, скорости и безопасности.

Основные рекомендации:

Онлайн-генератор предоставляет быстрый доступ к случайным числам без программирования, с настройкой параметров под конкретную задачу. Используйте статистические тесты для проверки качества при критических применениях.


Дисклеймер: для задач, связанных с безопасностью (пароли, ключи шифрования, токены), не используйте обычные псевдослучайные генераторы. Применяйте только криптографически стойкие методы с достаточной энтропией.

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

Как получить случайное число в заданном диапазоне?

Укажите минимальное и максимальное значение диапазона, выберите количество чисел и нажмите кнопку генерации. Система мгновенно выдаст случайные числа в указанных границах.

Можно ли генерировать уникальные случайные числа без повторений?

Да, активируйте опцию "Уникальные числа" — генератор исключит повторяющиеся значения. Количество уникальных чисел ограничено размером диапазона.

Какой алгоритм используется для генерации случайных чисел?

Используется псевдослучайный генератор на основе алгоритма Mersenne Twister или криптографически стойкие методы (Web Crypto API). Для большинства задач псевдослучайные числа достаточны.

Для чего нужен генератор случайных чисел?

Применяется в лотереях, играх, случайной выборке участников, генерации паролей, статистическом моделировании, A/B-тестировании, научных исследованиях и криптографии.

Как проверить качество случайных чисел?

Используйте статистические тесты: критерий хи-квадрат, тест серий, тест последовательностей. Качественный генератор даёт равномерное распределение без очевидных закономерностей.

Можно ли получить отрицательные случайные числа?

Да, укажите отрицательное значение в поле минимума (например, от −100 до 100), и генератор выдаст числа включая отрицательный диапазон.

Мы подобрали калькуляторы, которые помогут вам с разными задачами, связанными с текущей темой.

Генератор 10

Генератор случайных чисел от 1 до 10 — простой и удобный онлайн-инструмент для получения произвольного числа в диапазоне десяти. Идеально подходит для …

Перейти к калькулятору

Генератор 100

Генератор 100 — это онлайн-инструмент для быстрого создания случайных чисел в диапазоне от 1 до 100. Он незаменим при проведении розыгрышей призов, …

Перейти к калькулятору

Генератор 11

Генератор 11 — это простой и удобный онлайн-инструмент для получения случайного числа от 1 до 11. Он пригодится для игр, розыгрышей призов, случайного …

Перейти к калькулятору

Генератор 16

Генератор случайных чисел от 1 до 16 — это простой онлайн-инструмент для получения случайных значений в заданном диапазоне. Он пригодится для игр, …

Перейти к калькулятору