Обложка: Что такое случайное число в программировании? Простыми словами
24 ноября 2025 г.Разработка

Что такое случайное число в программировании? Простыми словами

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

Ваш компьютер не умеет в азартные игры. И вот почему.

Представьте, что вы бросаете игральный кубик. Шестигранный символ хаоса. Вы выпускаете его из руки, он подпрыгивает, сталкивается с неровностями стола, сопротивляется воздуху… Результат непредсказуем в принципе. Это и есть настоящая случайность. Физический процесс, на который влияют миллионы факторов, которые мы не можем (или не хотим) просчитать.

А теперь откройте любую компьютерную игру. Выпал критический удар? Найдена редкая вещь? Сгенерировался случайный уровень? Компьютер делает вид, что бросает такой же кубик. Но это — иллюзия. Великая и ужасная иллюзия.

Компьютер, по своей железной и кремниевой сути, — это большая, очень быстрая и невероятно точная машина-педант. Он не «чувствует» удачу. Он выполняет инструкции. А инструкции детерминированы: при одних и тех же входных данных вы всегда получите один и тот же результат. Какой уж тут кубик?

Так откуда же берутся эти «случайные» числа? А вот сейчас мы заглянем за кулисы этой магии.

Настоящая случайность: Квантовый кубик Доктора Стрэнджа

Да, истинная случайность в нашем мире существует. Это квантовые флуктуации, тепловой шум в электронных компонентах, время между нажатиями клавиш на вашей клавиатуре. Это хаотичные, непредсказуемые процессы, которые происходят в самой основе реальности.

Идеальный генератор случайных чисел (ГСЧ) — это и есть тот самый Доктор Стрэндж, который заглядывает в 14 000 605 будущих и видит все возможные исходы. Он подключен к этому самому квантовому хаосу и на его основе выдает чистое, ничем не обусловленное случайное число. Такие генераторы существуют (их называют аппаратными), но они дороги, сложны и используются в основном в криптографии и научных симуляциях, где нужна абсолютная непредсказуемость.

Ваш ноутбук или смартфон — не Доктор Стрэндж. Он — гениальный сценарист.

Псевдослучайность: Великий сценарист и его поваренная книга

Поскольку быть провидцем сложно и накладно, программисты придумали гениальное решение — генераторы псевдослучайных чисел (ГПСЧ).

Работает это так. Есть у нас алгоритм — некая «поваренная книга» для создания чисел. И есть у этого алгоритма зерно (seed) — начальное число, которое является отправной точкой для всех вычислений. Это как семя, из которого вырастает огромное, кажущееся хаотичным, дерево чисел.

Дайте алгоритму одно и то же зерно — и он выдаст одну и ту же последовательность чисел. Всегда. Без исключений.

Это и есть наш «гениальный сценарист». Вы даете ему одно-единственное начальное слово (зерно), а он по своему сложному, заранее известному внутреннему плану пишет целый сериал. Для зрителя (то есть для вас) сюжет полон неожиданных поворотов. Но для того, кто знает начальное слово и «почерк» сценариста, весь сюжет предопределен от начала и до конца.

В большинстве языков программирования, если вы не укажете зерно явно, в его качестве используется текущее время в миллисекундах. И это довольно умно, потому что момент, когда вы запустили программу, предугадать сложно. Но повторить — можно. Это не настоящий хаос, это очень качественная его симуляция.

Рубрика: Слишком предсказуемый сюжет

Что же происходит, когда наш «сценарист» получает одно и то же зерно снова и снова? Правильно, он пишет один и тот же сценарий.

Пример из цифровой жизни: Допустим, вы играете в старую добрую RPG, где все сокровища в сундуках и случайные встречи генерируются при создании мира. Если игра каждый раз в качестве зерна использует, скажем, 12345, то каждый новый игрок будет находить один и тот же Меч Драконоборца в одной и той же бочке на втором уровне подземелья. Весьма скучно.

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

Рубрика: Опасно для жизни

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

Обычный ГПСЧ — это как замок на дневнике вашего подростка. Он защищает от младшей сестры и любопытных родителей. Механизм простой, и если знать модель, его можно вскрыть скрепкой. Он идеален для игр, симуляций, любых задач, где не стоит вопрос о безопасности.

Криптостойкий ГПСЧ (CSPRNG) — это сейфовый замок в швейцарском банке. Его механизм устроен так, что даже зная, как он в целом работает, и видя несколько предыдущих чисел, вы не сможете предсказать следующее. Вскрыть его можно только грубой силой, перебрав умопомрачительное количество вариантов.

Почему это «опасно для жизни»? Потому что от этого зависят ваши пароли, шифрование ваших сообщений в мессенджерах, безопасность онлайн-банкинга. Если для генерации вашего секретного ключа используется простой «игровой» генератор, злоумышленник, узнав алгоритм и зерно, сможет воспроизвести всю последовательность и получить ваш ключ. Это все равно что воровать, имея отмычку ко всем замкам в городе.

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

Итог: Хаос как услуга

Так что же такое случайное число в программировании?

Это не бросок кубика. Это гениально рассчитанная симуляция броска.

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

И в этом нет ничего плохого. Это элегантный компромисс, который позволяет нам иметь лотереи в играх, уникальные миры и реалистичные симуляции. Главное — понимать разницу и не использовать «замок от дневника» для охраны государственной тайны.

Ваш компьютер — не метатель кубиков. Он — великий иллюзионист, и его главный фокус — заставить вас поверить в чудо. И знаете что? У него это прекрасно получается.