Рандом — понятие случайности в математике и информатике¶
Рандом (от англ. random — «случайный») — в широком смысле обозначает результат процесса, при котором исход не может быть точно предсказан заранее, а выбирается из множества возможных вариантов без видимой закономерности. В математике и информатике под рандомом понимают либо сам процесс генерации случайных величин, либо полученное в результате значение. Термин широко используется в повседневной речи как синоним слова «случайность», а в программировании — как обозначение функций и алгоритмов, выдающих непредсказуемые значения.
¶Случайность и детерминизм
С точки зрения классической физики все процессы в мире детерминированы: если бы можно было точно знать положение и импульс каждой частицы, исход любого события был бы предсказуем. Однако на практике из-за чрезвычайной сложности систем и ограничений измерений мы говорим о случайности. Рандом, таким образом, отражает не столько объективную непредсказуемость природы, сколько нашу неспособность учесть все факторы.
В квантовой механике, в отличие от классической физики, случайность считается фундаментальной: положение электрона, например, описывается вероятностной функцией, и результат измерения действительно непредсказуем до момента проведения измерения. Эту позицию отстаивал Альберт Эйнштейн, который считал, что «Бог не играет в кости», однако большинство физиков разделяют вероятностную интерпретацию.
¶Математическая теория вероятностей
В математике рандом формализуется через понятие случайной величины — функции, значения которой определяются случайным образом согласно заданному распределению вероятностей. Основные понятия:
- Пространство элементарных исходов — множество всех возможных результатов (например, {орёл, решка} при подбрасывании монеты).
- Вероятность — число от 0 до 1, характеризующее likelihood наступления события.
- Распределение — закон, по которому вероятности распределены между возможными значениями (нормальное, равномерное, пуассоново и другие).
Классический пример рандома — подбрасывание честной монеты: вероятность каждого из двух исходов равна 0,5. Более сложные примеры — генерация равномерно распределённого вещественного числа на отрезке [0, 1] или выбор случайного элемента из массива данных.
¶Псевдослучайность в вычислительной технике
Компьютеры по своей природе детерминированы: любой программный код выполняется строго по заданному алгоритму. Поэтому «настоящая» случайность в программировании недостижима без использования внешних источников энтропии. Вместо этого применяются псевдослучайные генераторы (PRNG) — алгоритмы, которые на основе начального значения (seed) вычисляют последовательность чисел, обладающих статистическими свойствами случайной последовательности.
Наиболее известные алгоритмы:
| Алгоритм | Год | Особенности |
|---|---|---|
| LCG (ликонгруэнтный) | 1949 | Простая формула, используется в ранних играх и системах |
| Mersenne Twister | 1997 | Длинный период (2^19937−1), стандарт в Python, PHP, Ruby |
| xorshift | 2003 | Быстрый, не требует больших таблиц состояния |
| PCG | 2014 | Компактный, хорошее качество выходной последовательности |
Для криптографии обычные PRNG не подходят, так как их выход предсказуем при известном seed. Вместо них используют криптографически стойкие генераторы (CSPRNG), например /dev/urandom в Linux или CryptGenRandom в Windows, которые черпают энтропию из аппаратных шумов — таймингов прерываний, движений мыши, шума процессора.
¶Генерация настоящей случайности
Настоящие генераторы случайных чисел (TRNG) используют физические явления: радиоактивный распад, шум диода, атмосферные помехи. В России работающие аппаратные генераторы случайных чисел выпускаются, в частности, для систем криптозащиты и применяются в ГОСТ-сертифицированных криптографических модулях. Некоторые онлайн-сервисы, например, проект Random.org, генерируют числа на основе атмосферного шума.
¶Применение рандома
Случайные числа и процессы используются в самых разных областях:
- Статистика и моделирование — метод Монте-Карло позволяет оценить сложные интегралы и вероятности через многократные случайные выборки; применяется в физике, экономике, инженерии.
- Компьютерные игры — генерация уровней, выпадение предметов, поведение неигровых персонажей.
- Криптография — создание ключей шифрования, генерация одноразовых паролей.
- Машинное обучение — перемешивание обучающих данных, инициализация весов нейронных сетей, стохастический градиентный спуск.
- Научные эксперименты — рандомизированные контролируемые исследования, рандомизация участников по группам для исключения систематических ошибок.
¶Рандом в повседневной жизни
В разговорной речи «рандом» описывает нечто непредсказуемое, неожиданное или бессистемное. Популярность термина в русском языке выросла с распространением интернета и компьютерных игр, где случайные события — неотъемлемая часть геймплея. Фразы вроде «выпал рандом» или «чистый рандом» используются для описания ситуаций, когда исход определяется случайным выбором, а не усилиями или навыками участника.
¶Историческая справка
Понятие случайности изучается с античности: атомисты Демокрит и Левкипп предполагали, что природа состоит из атомов, движущихся хаотически. Систематическая математическая теория вероятностей возникла в XVII веке в связи с задачами азартных игр — Блез Паскаль и Пьер де Ферма заложили её основы в переписке 1654 года. Термин «генератор случайных чисел» появился в XX веке вместе с развитием вычислительной техники.
¶Источники
- Феллер, В. Введение в теорию вероятностей и её приложения
- Кнут, Д. Искусство программирования, том 2: получисленные алгоритмы
- ГОСТ Р 34.13-2018 «Информационные технологии. Криптографическая защита информации. Хеш-функция»
- Press, W. et al. Numerical Recipes: The Art of Scientific Computing
