Генератор случайных чисел онлайн — получить случайное число
Генератор случайных чисел позволяет мгновенно получить случайное число в заданном диапазоне с настройкой параметров уникальности и количества. Используется для игр, лотерей, выборки, тестирования, статистики и криптографии.
Содержание статьи
- Что такое генератор случайных чисел
- Как пользоваться генератором
- Алгоритмы генерации
- Настройка диапазона
- Уникальные случайные числа
- Примеры использования
- Проверка качества генератора
- Применение в различных областях
- Типичные ошибки и решения
- Альтернативные методы
- Советы по использованию
- Нормативные и справочные материалы
- Заключение
Результат:
Что такое генератор случайных чисел
Генератор случайных чисел — инструмент для получения непредсказуемых числовых значений в заданном диапазоне. Используется в играх, розыгрышах, научных расчётах, программировании, криптографии и статистике. Онлайн-генератор избавляет от необходимости писать код или использовать физические методы (кости, монеты).
Случайные числа делятся на два типа:
- Псевдослучайные — вычисляются по алгоритму, предсказуемы при известном начальном значении (seed), достаточны для большинства задач
- Истинно случайные — генерируются на основе физических процессов (шум, радиоактивный распад), непредсказуемы, используются в криптографии
Большинство онлайн-генераторов работают на псевдослучайных алгоритмах с высоким качеством распределения.
Как пользоваться генератором
Основные параметры
- Минимальное значение — нижняя граница диапазона (может быть отрицательным)
- Максимальное значение — верхняя граница диапазона
- Количество чисел — сколько случайных чисел сгенерировать за один раз
- Уникальность — исключить повторяющиеся значения (количество ограничено размером диапазона)
- Сортировка — упорядочить результат по возрастанию или убыванию
Шаги генерации
- Укажите диапазон: от какого до какого числа нужны значения
- Выберите количество чисел (для уникальных: не больше, чем
максимум − минимум + 1) - Настройте дополнительные опции (уникальность, сортировка)
- Нажмите «Сгенерировать» — результат появится мгновенно
- Скопируйте числа или повторите генерацию для нового набора
Пример: диапазон от 1 до 100, количество 10, уникальные — получите 10 неповторяющихся чисел от 1 до 100.
Алгоритмы генерации
Псевдослучайные генераторы
Linear Congruential Generator (LCG)
Простейший алгоритм:
X(n+1) = (a × X(n) + c) mod m
X(n)— текущее значениеa— множитель (например, 1664525)c— приращение (например, 1013904223)m— модуль (например, 2³²)
Быстрый, но имеет предсказуемую периодичность. Не рекомендуется для криптографии.
Mersenne Twister (MT19937)
Современный алгоритм с периодом 2¹⁹⁹³⁷ − 1:
- Высокое качество распределения
- Проходит большинство статистических тестов
- Используется в Python, MATLAB, R по умолчанию
- Период ~ 10⁶⁰⁰⁰ чисел
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))
случайное— от 0 до 1 (не включая 1)floor— округление вниз+1— чтобы max входил в диапазон
Примеры:
- От 1 до 6 (кубик):
1 + floor(random() × 6)→ {1, 2, 3, 4, 5, 6} - От 0 до 255 (байт):
floor(random() × 256)→ {0, 1, …, 255} - От −10 до 10:
−10 + floor(random() × 21)→ {−10, −9, …, 10}
Вещественные числа
Для диапазона [min, max] с дробной частью:
результат = min + случайное × (max − min)
Без округления — результат с плавающей точкой.
Пример: от 0.0 до 1.0 с точностью 2 знака → round(random() × 100) / 100.
Отрицательные числа
Генератор работает с отрицательными значениями аналогично положительным:
- От −100 до −1
- От −50 до 50
- От −1000 до 1000
Укажите отрицательное значение в поле минимума, система автоматически рассчитает диапазон.
Уникальные случайные числа
Алгоритм Фишера-Йейтса (Fisher-Yates Shuffle)
Для генерации N уникальных чисел из диапазона:
- Создать массив всех чисел диапазона
- Перемешать массив:
для i от n−1 до 1: j = случайное от 0 до i поменять местами элементы[i] и элементы[j] - Взять первые N элементов
Сложность: O(n) по времени и памяти, где n — размер диапазона.
Метод исключения повторов
Для небольшого количества уникальных чисел:
- Генерировать случайное число
- Проверить, есть ли в списке результатов
- Если нет — добавить, если да — повторить шаг 1
- Повторять, пока не наберётся нужное количество
Эффективность: хорошо работает, если количество << размер диапазона. При большом проценте выборки (>50%) лучше использовать перемешивание.
Ограничения
Количество уникальных чисел не может превышать размер диапазона:
- Диапазон 1–10: максимум 10 уникальных чисел
- Диапазон 1–100: максимум 100 уникальных чисел
При попытке запросить больше — система выдаст ошибку или автоматически ограничит количество.
Примеры использования
Игры и развлечения
Бросок кубика
Диапазон: 1–6, количество: 1
Результат: 4 (одно случайное число от 1 до 6)
Рулетка (европейская)
Диапазон: 0–36, количество: 1
Результат: 17
Генерация координат карты
- X: от 0 до 1920 (ширина экрана)
- Y: от 0 до 1080 (высота экрана)
Результат: (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 группы:
- Генерация: 1–1000, 500 уникальных → группа A
- Оставшиеся → группа B
Программирование и тестирование
Генерация тестовых данных
Возраст пользователей: 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 (шестизначный код подтверждения)
Проверка качества генератора
Статистические тесты
Критерий хи-квадрат (χ²)
Проверяет равномерность распределения:
- Разделить диапазон на интервалы
- Сгенерировать большое количество чисел (например, 10 000)
- Подсчитать частоту попадания в каждый интервал
- Сравнить наблюдаемые и ожидаемые частоты
Формула:
χ² = Σ ((O(i) − E(i))² / E(i))
O(i)— наблюдаемая частота интервала iE(i)— ожидаемая частота (количество / число интервалов)
Если χ² близко к числу интервалов — распределение равномерное.
Тест серий (Runs Test)
Проверяет независимость последовательных значений:
- Сгенерировать последовательность
- Найти “серии” возрастающих и убывающих участков
- Сравнить количество серий с ожидаемым
Слишком мало серий — корреляция между числами, слишком много — чрезмерная изменчивость.
Тест промежутков (Gap Test)
Считает расстояние между повторениями чисел в заданном интервале. Качественный генератор даёт равномерное распределение промежутков.
Тест перестановок
Анализирует порядок следования n последовательных чисел. Для n=3 возможно 6 перестановок (3! = 6), каждая должна встречаться примерно одинаково часто.
Визуальная оценка
График распределения
Постройте гистограмму частот:
- Ось X — интервалы значений
- Ось Y — количество попаданий
Равномерное распределение выглядит как прямоугольник одинаковой высоты.
Диаграмма рассеяния (Scatter Plot)
Для пар (X(i), X(i+1)) постройте точки на плоскости. Качественный генератор даёт равномерное “облако” без видимых структур (линий, кластеров).
Практическая проверка
Монте-Карло: оценка числа π
- Генерировать случайные точки (x, y) в квадрате [0, 1] × [0, 1]
- Считать, сколько попало в четверть круга (x² + y² ≤ 1)
- Отношение:
π ≈ 4 × (попавшие / всего)
При 10 000 точек хороший генератор даст π ≈ 3.14 ± 0.02.
Тест “дня рождения”
В группе из 23 человек вероятность совпадения дней рождения ≈ 50%. Сгенерируйте 23 случайных числа от 1 до 365, повторите 1000 раз — совпадения должны быть примерно в 500 случаях.
Применение в различных областях
Научные исследования
Метод Монте-Карло
Моделирование сложных систем с использованием случайных величин:
- Физика: траектории частиц, квантовые процессы
- Экономика: прогнозирование рынков, оценка рисков
- Биология: эволюция популяций, распространение эпидемий
Генетические алгоритмы
Случайные мутации и кроссоверы для оптимизации:
- Выбор родителей для скрещивания
- Точки разрыва хромосом
- Вероятность мутации генов
Стохастическое моделирование
Имитация случайных процессов: погода, финансовые рынки, сетевой трафик.
Образование
Генерация задач и тестов
- Случайные числа в математических примерах
- Порядок вопросов в тестировании
- Распределение вариантов заданий
Изучение вероятности и статистики
Эксперименты с бросанием монет, кубиков, случайными выборками.
Игровая индустрия
Процедурная генерация
Создание уникальных уровней, ландшафтов, персонажей:
- Minecraft: генерация мира на основе seed
- Roguelike-игры: случайное расположение комнат, врагов, предметов
- No Man’s Sky: генерация планет и существ
Игровая механика
- Шанс критического удара
- Выпадение предметов (loot)
- Случайные события и квесты
- Направление ветра, погода
Искусственный интеллект
Непредсказуемость поведения NPC (неигровых персонажей) для реалистичности.
Маркетинг и бизнес
Выборка для опросов
Случайная выборка клиентов для интервью, фокус-групп, A/B-тестирования.
Промо-акции
- Розыгрыши призов среди участников
- Случайные скидки (например, от 10% до 30%)
- Выбор победителей конкурсов
Прогнозирование
Симуляция сценариев развития бизнеса (метод Монте-Карло для финансовых моделей).
Информационная безопасность
Генерация ключей шифрования
Криптографически стойкие случайные числа для:
- Симметричного шифрования (AES, ChaCha20)
- Асимметричного шифрования (RSA, ECC)
- Одноразовых блокнотов (OTP)
Создание паролей и токенов
- Случайные пароли высокой сложности
- Session ID, CSRF-токены
- API-ключи, временные коды
Защита от атак
- ASLR (Address Space Layout Randomization) — случайное размещение данных в памяти
- Случайные задержки для защиты от timing-атак
- Nonce в криптографических протоколах
Типичные ошибки и решения
Неравномерное распределение
Проблема: использование 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
Атакующий может перебрать возможные значения времени запуска и предсказать последовательность.
Решение: использовать источники высокой энтропии:
/dev/urandom(Linux)CryptGenRandom(Windows)getentropy(),getrandom()(системные вызовы)
Корреляция между числами
Проблема: последовательные числа из LCG могут иметь линейную зависимость
Решение: использовать современные алгоритмы (Mersenne Twister, Xorshift), избегать LCG для критичных задач.
Малый период генератора
Проблема: генератор повторяет последовательность после N итераций
Решение: выбирать алгоритмы с большим периодом (MT19937: 2¹⁹⁹³⁷ − 1).
Недостаточная криптостойкость
Проблема: использование Math.random() для генерации паролей
Псевдослучайные генераторы предсказуемы и не подходят для безопасности.
Решение: использовать криптографические генераторы:
- JavaScript:
crypto.getRandomValues() - Python:
secrets(вместоrandom) - PHP:
random_bytes(),random_int()
Альтернативные методы
Физические генераторы
Радиоактивный распад
Счётчик Гейгера регистрирует моменты распада — истинно случайные события.
Пример: Random.org использует атмосферные шумы.
Тепловой шум
Флуктуации напряжения в резисторе из-за теплового движения электронов.
Квантовые процессы
Измерение поляризации фотонов, квантовая суперпозиция. Используется в квантовой криптографии.
Гибридные методы
Комбинация псевдослучайного генератора с периодическим добавлением энтропии из физических источников.
Пример: /dev/random (Linux) собирает энтропию из событий (движение мыши, нажатия клавиш, сетевые пакеты) и смешивает с CSPRNG.
Таблицы случайных чисел
Исторический метод: заранее сгенерированные таблицы случайных цифр (например, таблицы RAND Corporation, 1 млн случайных цифр). Использовались в статистике до появления компьютеров.
Недостатки: ограниченный объём, неудобство, возможность повторного использования.
Советы по использованию
Выбор диапазона
- Задача: выбрать 1 из 10 → диапазон 1–10 (или 0–9)
- Процентная вероятность: 1–100 (например, критический удар с шансом 15% → если число ≤ 15, удар критический)
- Координаты: учитывайте разрешение экрана, размер области
Количество чисел
- Для единичного выбора: 1 число
- Для множественного выбора без замены: уникальные числа, количество ≤ размера диапазона
- Для моделирования событий: большое количество (1000+) для статистики
Уникальность
Включайте, если:
- Выбор победителей без повторов
- Распределение элементов по позициям
- Генерация перестановок
Отключайте, если:
- Моделирование независимых событий (броски кубика)
- Каждое число может повторяться (выборка с возвращением)
Проверка результата
- Проверьте границы: минимум и максимум должны встречаться в результатах
- При большом количестве итераций (1000+) постройте гистограмму — она должна быть равномерной
- Для критичных приложений (криптография) используйте только проверенные криптостойкие генераторы
Сохранение 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, Xorshift)
- Для криптографии и паролей — криптографически стойкие (CSPRNG, Web Crypto API)
- Для научных расчётов — проверенные библиотечные функции с известным периодом и качеством
- Для уникальных выборок — алгоритм Фишера-Йейтса
Онлайн-генератор предоставляет быстрый доступ к случайным числам без программирования, с настройкой параметров под конкретную задачу. Используйте статистические тесты для проверки качества при критических применениях.
Дисклеймер: для задач, связанных с безопасностью (пароли, ключи шифрования, токены), не используйте обычные псевдослучайные генераторы. Применяйте только криптографически стойкие методы с достаточной энтропией.
Часто задаваемые вопросы
Как получить случайное число в заданном диапазоне?
Укажите минимальное и максимальное значение диапазона, выберите количество чисел и нажмите кнопку генерации. Система мгновенно выдаст случайные числа в указанных границах.
Можно ли генерировать уникальные случайные числа без повторений?
Да, активируйте опцию "Уникальные числа" — генератор исключит повторяющиеся значения. Количество уникальных чисел ограничено размером диапазона.
Какой алгоритм используется для генерации случайных чисел?
Используется псевдослучайный генератор на основе алгоритма Mersenne Twister или криптографически стойкие методы (Web Crypto API). Для большинства задач псевдослучайные числа достаточны.
Для чего нужен генератор случайных чисел?
Применяется в лотереях, играх, случайной выборке участников, генерации паролей, статистическом моделировании, A/B-тестировании, научных исследованиях и криптографии.
Как проверить качество случайных чисел?
Используйте статистические тесты: критерий хи-квадрат, тест серий, тест последовательностей. Качественный генератор даёт равномерное распределение без очевидных закономерностей.
Можно ли получить отрицательные случайные числа?
Да, укажите отрицательное значение в поле минимума (например, от −100 до 100), и генератор выдаст числа включая отрицательный диапазон.