Метод серединных квадратов
Метод серединных квадратов — это один из первых алгоритмов генерации псевдослучайных чисел, предложенный Джоном фон Нейманом в 1946 году. Метод основан на итеративном возведении в квадрат исходного числа и извлечении из результата средней части цифр заданной длины. Относится к классу детерминированных генераторов псевдослучайных чисел, то есть его выходная последовательность полностью определяется начальным значением (зерном).
История
Метод серединных квадратов был разработан в середине 1940-х годов в рамках работ по созданию первых электронных вычислительных машин. Джон фон Нейман, работавший над проектом ENIAC в Лос-Аламосской национальной лаборатории, столкнулся с необходимостью получения случайных чисел для моделирования процессов ядерного деления. Поскольку аппаратные генераторы случайных чисел были ненадёжны, а таблицы случайных чисел — неудобны, фон Нейман предложил вычислительный подход.
В 1949 году метод был описан в докладе «Various Techniques Used in Connection with Random Digits» на симпозиуме по методу Монте-Карло. Несмотря на то, что метод серединных квадратов быстро выявил серьёзные недостатки (короткий период, вырождение последовательности в ноль), он сыграл важную роль в развитии вычислительной математики и стимулировал создание более совершенных генераторов, таких как линейный конгруэнтный метод (1951 год).
Алгоритм
Основная процедура
Пусть требуется генерировать последовательность псевдослучайных чисел, каждое из которых содержит n цифр в десятичной системе счисления. Алгоритм состоит из следующих шагов:
- Выбирается начальное число (зерно)
X₀, содержащееnцифр. Если число имеет меньше цифр, оно дополняется ведущими нулями до длиныn. - Текущее число
Xᵢвозводится в квадрат. В результате получается число, содержащее до2nцифр. - Если в квадрате меньше
2nцифр, оно дополняется ведущими нулями слева до длины2n. - Из полученного числа извлекаются
nсредних цифр. Еслиnчётно, берутсяnцифр, начиная с позиции(n/2)+1слева. Еслиnнечётно, возможны вариации (например, отбрасывание одной цифры слева и одной справа, или округление). - Извлечённое число становится следующим членом последовательности
Xᵢ₊₁. - Для получения псевдослучайного числа в диапазоне [0, 1) результат делится на
10ⁿ.
Пример
Для n=4 и начального числа X₀=1234:
- Шаг 1:
X₀ = 1234 - Шаг 2:
1234² = 1522756(7 цифр) - Шаг 3: Дополнение до 8 цифр:
01522756 - Шаг 4: Извлечение средних 4 цифр:
5227 - Шаг 5:
X₁ = 5227 - Шаг 6: Псевдослучайное число:
0.5227
Повторение для X₁=5227:
5227² = 27321529(8 цифр)- Средние 4 цифры:
3215 X₂ = 3215
Свойства и недостатки
Период и вырождение
Основным недостатком метода серединных квадратов является короткий период последовательности и склонность к вырождению. При определённых начальных значениях последовательность быстро зацикливается, часто попадая в цикл малой длины или в ноль. Например, для n=4 и зерна 0000 последовательность сразу вырождается в ноль. Для зерна 3792 последовательность зацикливается на числе 6100.
Чувствительность к начальному значению
Метод крайне чувствителен к выбору начального числа. Некоторые зерна приводят к последовательностям с приемлемыми статистическими свойствами, другие — к быстрому вырождению. Исследования показали, что для n=4 только около 20% всех возможных начальных значений дают последовательности, не вырождающиеся в ноль в течение первых 100 шагов.
Неравномерность распределения
Генерируемые числа не являются равномерно распределёнными. В последовательности часто наблюдаются корреляции между соседними значениями, что делает метод непригодным для большинства статистических приложений.
Применение
Несмотря на недостатки, метод серединных квадратов нашёл ограниченное применение:
- Историческое: Использовался в ранних компьютерных программах для метода Монте-Карло, в частности, в моделировании нейтронного транспорта в Лос-Аламосе.
- Образовательное: Часто приводится в учебниках по численным методам и программированию как пример простого генератора псевдослучайных чисел, иллюстрирующего проблемы, связанные с детерминированными последовательностями.
- Криптография: Не применяется из-за предсказуемости и малого периода.
Вариации
Метод серединных произведений
Модификация, предложенная Дерриком Лемером в 1951 году, где вместо возведения в квадрат используется умножение двух последовательных чисел. Это несколько улучшает статистические свойства, но не устраняет фундаментальных недостатков.
Метод серединных квадратов в других системах счисления
Алгоритм может быть реализован в двоичной, восьмеричной или шестнадцатеричной системах счисления. В двоичной системе метод эквивалентен извлечению средних битов из квадрата числа. Двоичная реализация использовалась в некоторых ранних компьютерах, например, в IBM 701.
Критика
Метод серединных квадратов подвергся критике ещё в 1950-х годах. Дональд Кнут в своей книге «Искусство программирования» (том 2) назвал его «первым серьёзным методом» и одновременно «одним из худших». Основные претензии:
- Отсутствие теоретического обоснования периода.
- Невозможность гарантировать невырождение последовательности для произвольного начального значения.
- Низкая скорость генерации по сравнению с более поздними алгоритмами.
Интересные факты
- Джон фон Нейман, осознавая недостатки метода, иронично заметил: «Любой, кто использует арифметические методы для получения случайных чисел, находится в состоянии греха».
- В 1950-х годах метод серединных квадратов использовался в программе Монте-Карло для расчёта критической массы атомной бомбы, что потребовало тщательного подбора начальных значений.
- Метод серединных квадратов в двоичной системе был реализован в компьютере ENIAC, где он генерировал 1000 случайных чисел в секунду.
Источники
- Knuth, D. E. The Art of Computer Programming, Volume 2: Seminumerical Algorithms. — 3rd ed. — Addison-Wesley, 1997. — ISBN 0-201-89684-2.
- von Neumann, J. Various Techniques Used in Connection with Random Digits // Monte Carlo Method. — National Bureau of Standards Applied Mathematics Series, 1951. — Vol. 12. — P. 36–38.
- Press, W. H., Teukolsky, S. A., Vetterling, W. T., Flannery, B. P. Numerical Recipes: The Art of Scientific Computing. — 3rd ed. — Cambridge University Press, 2007. — ISBN 978-0-521-88068-8.
- L'Ecuyer, P. Random Number Generation // Handbook of Computational Statistics. — Springer, 2012. — P. 35–71.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →