Обновлено:

Случайные целые числа

Параметры генерации
Тип генератора
криптографический медленнее, но непредсказуем

Зачем нужны случайные целые числа

Случайные целые числа – это числа из заданного диапазона, выбранные без видимой закономерности. Они используются в криптографии, лотереях, научных симуляциях, тестировании ПО и играх. Без них невозможна генерация ключей шифрования, выбор победителя розыгрыша или моделирование методом Монте-Карло.

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

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

Псевдослучайные числа (ГПСЧ)

Генератор псевдослучайных чисел (ГПСЧ, PRNG) – алгоритм, который вычисляет последовательность чисел по формуле. Результат выглядит случайным, но полностью определяется начальным значением – seed. Один и тот же seed даёт одну и ту же последовательность medium.com.

Самый распространённый алгоритм – линейный конгруэнтный ГПСЧ (LCPRNG). Формула:

Xₙ₊₁ = (a × Xₙ + c) mod m

Где:

  • a – множитель
  • c – приращение
  • m – модуль
  • X₀ – начальное значение (seed)

При a = 45, c = 21, m = 67 и seed = 2 последовательность: 44, 14, 8, 52, 19, 35… Каждое число вычисляется из предыдущего, и зная параметры, можно предсказать всю цепочку.

Плюсы ГПСЧ:

  • Быстрый расчёт
  • Воспроизводимость при фиксированном seed
  • Подходит для тестов, анимаций, процедурной генерации

Минусы:

  • Предсказуемость – непригоден для криптографии
  • Периодичность – последовательность повторяется через m итераций

Истинно случайные числа (ГСЧ)

Генератор случайных чисел (ГСЧ, TRNG) получает данные из физических источников энтропии – меры беспорядка и непредсказуемости. Источники: тепловой шум полупроводников, тайминги нажатий клавиш, перемещения мыши, температура процессора medium.com.

В браузере истинная случайность доступна через crypto.getRandomValues(), в Linux – через /dev/random. Эти методы медленнее ГПСЧ, но криптографически стойки.

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

Для генерации случайного целого числа от A до B включительно используется формула:

result = floor(random() × (B - A + 1)) + A

Разберём на примере – число от 10 до 50:

  1. random() даёт число от 0 до 0,999…
  2. Умножаем на 41 (50 − 10 + 1) → получаем от 0 до 40,999…
  3. floor() отбрасывает дробную часть → от 0 до 40
  4. Прибавляем 10 → от 10 до 50

Калькулятор выше автоматически выполняет этот расчёт – укажите минимальное и максимальное значение.

Примеры для популярных диапазонов

ДиапазонФормула (JavaScript)Результат
От 1 до 10Math.floor(Math.random() * 10) + 1Целое 1–10
От 0 до 99Math.floor(Math.random() * 100)Целое 0–99
От 1 до 100Math.floor(Math.random() * 100) + 1Целое 1–100
От 1000 до 9999Math.floor(Math.random() * 9000) + 10004-значный пин

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

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

Генерация ключей шифрования, SSL-сертификатов, одноразовых паролей (OTP), токенов сессий. Здесь используют только криптографически стойкие ГСЧ – предсказуемость ключа ведёт к взлому.

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

Выбор победителя из списка участников, генерация лотерейных билетов. Требуется прозрачность и невозможность подделки – часто привлекают независимых аудиторов.

Научные симуляции

Метод Монте-Карло, моделирование молекулярной динамики, стохастические процессы. Учёным важна воспроизводимость – поэтому используют ГПСЧ с фиксированным seed.

Тестирование ПО

Генерация случайных входных данных для fuzz-тестирования, нагрузочного тестирования, проверки граничных условий. Фиксированный seed помогает воспроизвести упавший тест.

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

Броски кубиков, распределение карт, лутбоксы, процедурная генерация ландшафтов. В играх чаще используют ГПСЧ – скорость важнее криптографической стойкости.

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

ГПСЧ предсказуем по определению. В Chrome до версии 49 использовался алгоритм MWC1616 – зная два последовательных значения Math.random(), можно было вычислить внутреннее состояние и предсказать все следующие числа medium.com. Визуально это проявлялось как неравномерное распределение пикселей на сгенерированных изображениях.

С 2016 года V8 перешёл на xorshift128+ – алгоритм с лучшим распределением, но всё равно предсказуемый при наличии 64-битной арифметики. Для задач безопасности всегда используйте crypto.getRandomValues().

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

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

  • Равномерность – каждое число из диапазона появляется с одинаковой частотой
  • Независимость – знание предыдущих чисел не помогает предсказать следующее
  • Период – длина последовательности до первого повторения (чем больше, тем лучше)
  • Тест χ² (хи-квадрат) – проверяет соответствие распределения теоретическому

Для быстрой проверки можно сгенерировать 10 000 чисел от 1 до 10 и подсчитать частоту каждого – при равномерном распределении каждое значение встретится около 1 000 раз с отклонением ±3–5%.

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

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

Чем генератор псевдослучайных чисел отличается от настоящего ГСЧ?

ГПСЧ использует детерминированный алгоритм и начальное значение (seed), поэтому последовательность можно воспроизвести. Настоящий ГСЧ получает данные из физических источников энтропии – тепловой шум, тайминки клавиш – и результат непредсказуем.

Можно ли предсказать результат Math.random()?

Да, в теории. Math.random() – это ГПСЧ на алгоритме xorshift128+. Зная внутреннее состояние, можно вычислить следующие значения. Для криптографии используйте crypto.getRandomValues().

Как получить случайное целое число от A до B?

Формула: Math.floor(Math.random() * (B - A + 1)) + A. Например, для диапазона от 10 до 50: Math.floor(Math.random() * 41) + 10. Калькулятор выше делает это автоматически.

Что такое энтропия в контексте случайных чисел?

Энтропия – мера неопределённости или хаотичности данных. Чем выше энтропия источника, тем менее предсказуемы получаемые числа. Истинная случайность требует высокой энтропии из физических процессов.

Для чего нужны воспроизводимые случайные последовательности?

Воспроизводимость критична для тестирования, научных симуляций и процедурных генераторов в играх. Фиксированный seed позволяет повторить результат, что невозможно с истинным ГСЧ.

  1. Что такое рандомное число: генераторы, алгоритмы и применение
  2. Рандомайзер чисел с исключением – онлайн
  3. Рандомный пароль: генератор и проверка надёжности
  4. Рандомные выборы онлайн – рандомайзер 2026
  5. Код случайных чисел: алгоритмы и примеры
  6. Найти случайные числа – онлайн генератор и формулы