Случайные числа и их применение¶
Случайные числа — это числовые последовательности, в которых каждый последующий элемент невозможно детерминированно предсказать на основе предыдущих, при этом значения распределены по заданному закону (чаще всего равномерно). Случайные числа являются фундаментальным понятием теории вероятностей, математической статистики и криптографии, а также необходимым инструментом для моделирования, игр и вычислительных алгоритмов.
¶Природа случайности
В математике различают три типа случайных последовательностей: истинно случайные, псевдослучайные и квазислучайные. Истинная случайность возникает из физических процессов, таких как радиоактивный распад, тепловой шум в полупроводниках или атмосферные помехи. Эти процессы не детерминированы и не могут быть воспроизведены повторно. Псевдослучайные числа генерируются детерминированными алгоритмами, которые производят последовательности, внешне неотличимые от случайных, но полностью определяемые начальным параметром (зерном). Квазислучайные последовательности (например, последовательности Соболя) не являются случайными в строгом смысле, но равномерно заполняют многомерное пространство, что используется в численных методах.
¶История
Потребность в случайных числах возникла задолго до появления компьютеров. В древности использовались игральные кости, жребий и астрономические наблюдения. В 1927 году английский статистик Леонард Типпет опубликовал первую большую таблицу случайных чисел, составленную на основе данных переписи населения. В 1947 году корпорация RAND выпустила знаменитую книгу «A Million Random Digits with 100,000 Normal Deviates», содержащую миллион случайных цифр, сгенерированных с помощью электронного рулеточного устройства. С развитием вычислительной техники в 1946 году Джон фон Нейман предложил метод середины квадрата — один из первых алгоритмов псевдослучайной генерации, который, однако, имел короткий период и был подвержен вырождению.
¶Генерация случайных чисел
¶Аппаратные генераторы
Аппаратные генераторы случайных чисел (True Random Number Generator, TRNG) используют физические источники энтропии. Современные процессоры (например, Intel с инструкцией RDRAND) встраивают такие генераторы на основе теплового шума. Аппаратные генераторы обеспечивают высокую степень непредсказуемости, но их производительность ограничена, а результаты требуют постобработки для устранения смещений.
¶Программные генераторы
Псевдослучайные генераторы (Pseudo Random Number Generator, PRNG) реализуются программно. Наиболее распространённые классы:
- Линейный конгруэнтный метод — простейший и быстрый алгоритм, используемый в стандартных библиотеках языков программирования. Его период ограничен, а младшие биты обладают слабой случайностью.
- Вихрь Мерсенна — алгоритм, предложенный Макото Мацумото и Такудзи Нисимурой в 1997 году. Обладает огромным периодом 2^19937−1 и хорошими статистическими свойствами, долгое время являлся стандартом де-факто.
- Криптографически стойкие генераторы — алгоритмы, специально спроектированные для невозможности восстановления внутреннего состояния по выходной последовательности. Примеры: ChaCha20, Blum Blum Shub, генераторы на основе хеш-функций.
¶Проверка качества
Для оценки качества случайных последовательностей применяются статистические тесты. Наиболее известны наборы тестов NIST SP 800-22, разработанные Национальным институтом стандартов и технологий США, а также тесты Diehard и TestU01. Эти наборы проверяют равномерность распределения, независимость битов, отсутствие корреляций и другие свойства. Последовательность, прошедшая все тесты, считается статистически случайной, хотя это не гарантирует её криптографическую стойкость.
¶Применение
¶Криптография
В криптографии случайные числа играют критическую роль: они используются для генерации ключей шифрования, создания одноразовых паролей, инициализационных векторов и соли для хеширования паролей. Безопасность многих протоколов (TLS, SSH, PGP) напрямую зависит от качества источника случайности. Компрометация генератора случайных чисел приводит к полному взлому криптографической системы.
¶Моделирование и симуляция
Метод Монте-Карло, разработанный в 1940-х годах при работе над Манхэттенским проектом, использует случайные числа для численного моделирования физических, экономических и инженерных процессов. Имитационное моделирование применяется в аэродинамике, финансовом риск-менеджменте, логистике и теории массового обслуживания.
¶Компьютерные игры и азартные игры
В играх случайные числа определяют поведение противников, выпадение предметов и процедурную генерацию уровней. В азартных играх (казино, лотереи) используются сертифицированные аппаратные генераторы, прошедшие независимую проверку, для обеспечения честности.
¶Статистика и научные исследования
Случайная выборка — основа статистического вывода. Случайные числа применяются при планировании экспериментов, рандомизации клинических испытаний лекарственных препаратов и в методе бутстрэпа для оценки доверительных интервалов.
¶Численные методы
Квазислучайные последовательности используются в методах интегрирования высокой размерности, где они дают лучшую сходимость, чем равномерно распределённые случайные числа.
¶Проблемы и ограничения
Главная проблема программных генераторов — их детерминированность: при известном начальном зерне всю последовательность можно воспроизвести. Это приводит к уязвимостям, если генератор инициализируется предсказуемым значением. Известны случаи взлома систем, где использовались слабые генераторы, например, уязвимость в Android-приложениях для Bitcoin в 2013 году. Аппаратные генераторы, в свою очередь, могут давать смещённые результаты из-за внешних воздействий и требуют тщательной калибровки.
¶Случайность в России
В России разработкой генераторов случайных чисел занимаются научные институты, в том числе в рамках работ по криптографии. Отечественные стандарты шифрования (ГОСТ 28147-89, ГОСТ Р 34.10-2012) предполагают использование качественных источников случайности. В 2010-х годах в МГУ и Новосибирском государственном университете проводились исследования по созданию генераторов на основе квантовых эффектов.
¶Интересные факты
- В 1999 году исследователи из Кембриджского университета обнаружили, что алгоритм генерации случайных чисел в одном из онлайн-казино позволял предсказывать результаты, что привело к иску на сумму более миллиона долларов.
- Существует проект LavaRand, в котором для генерации случайности используются фотографии лавовых ламп.
- Российская лотерея «Гослото» использует аппаратный генератор на основе физического шума, сертифицированный ФСБ России.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

