Вы находитесь на странице: 1из 90

Моделирование распределений

В.В. Некруткин
Материалы специального курса и специального семинара

4 февраля 2013 г.

Содержание
1 Введение. Общие положения 3

2 Табличные методы моделирования дискретных распределений 9


2.1 Таблицы дискретных распределений . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Табличный метод обратных функций . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Простейший табличный метод . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Последовательный метод обратных функций . . . . . . . . . . . . . . . . . . 12
2.2.3 Метод дихотомии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.4 Метод Чжень . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 О методе Уолкера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Еще о методе обратных функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Моделирование дискретных распределений, зависящих от параметров 22


3.1 Моделирование биномиального распределения . . . . . . . . . . . . . . . . . . . . . 22
3.2 Моделирование распределения Пуассона . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Моделирование геометрического распределения . . . . . . . . . . . . . . . . . . . . 26

4 Общие методы моделирования 29


4.1 Метод обратных функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.1 Примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 Метод отбора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.1 Идея метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.2 Теория метода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.3 Обсуждение. Варианты и примеры . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Метод дискретной декомпозиции распределений . . . . . . . . . . . . . . . . . . . . 40
4.3.1 Общая схема и примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.2 Модификации метода дискретной декомпозиции . . . . . . . . . . . . . . . . 42
4.3.3 Общий метод декомпозиции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5 Приемы моделирования различных распределений 50


5.1 Полярные методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 Равномерное распределение на окружности S1 . . . . . . . . . . . . . . . . . 50
5.1.2 Нормальное распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1.3 Равномерное распределение на сфере S2 . . . . . . . . . . . . . . . . . . . . . 52
5.1.4 Распределение Коши . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Моделирование многомерных гауссовских распределений . . . . . . . . . . . . . . . 54
5.3 Разные распределения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3.1 Показательное распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3.2 Степенное распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3.3 Гамма-распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.3.4 Бета-распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

1
6 О моделировании с дискретным источником случайности 60
6.1 Корневые диаграммы и сложность моделирования . . . . . . . . . . . . . . . . . . . 60
6.2 Оптимальные DM (P, f )-диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3 Связь с традиционным моделированием . . . . . . . . . . . . . . . . . . . . . . . . . 64

7 Приложение 1. Преобразования случайных векторов 66


7.1 Общее утверждение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2 Частные случаи, полезные для моделирования . . . . . . . . . . . . . . . . . . . . . 66
7.2.1 Афинные преобразования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2.2 Переход к полярным и сферическим координатам . . . . . . . . . . . . . . . 67
7.2.3 Гамма-распределение и распределение Дирихле . . . . . . . . . . . . . . . . 69
7.2.4 Распределения порядковых статистик . . . . . . . . . . . . . . . . . . . . . . 70

8 Приложение 2. Многомерные гауссовские распределения 72


8.1 Общий случай . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.2 Невырожденный случай . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

9 Приложение 3. Упражнения 74

Список литературы 89

2
Излагаемый здесь материал соответствует (несколько расширенной) первой части кур-
са лекций «Статистическое моделирование», в течение ряда десятилетий читаемого на од-
ноименной кафедре (и одноименной специализации) математико-механического факультета
Санкт-Петербургского (Ленинградского) университета.
Эта первая часть посвящена принципам и основным техническим приемам генерирования1
случайных величин и векторов, имеющих заданное распределение (для краткости часто упо-
требляют несколько жаргонный термин «моделирование распределений»2 ). Поскольку матери-
ал носит учебный характер, в него включено большое число упражнений.
Дополнительную информацию по этой тематике можно найти в отечественных (напри-
мер, [1] – [4]) и иностранных (см. [5] – [9]) учебниках и монографиях, посвященных как различ-
ным аспектам собственно моделирования, так и его применениям.
Особенно следует отметить книгу [10], которая фактически является подробным обзором
и справочником по генерированию случайных величин. Там можно найти достаточно эффек-
тивные, глубокие и сложные алгоритмы, изложение которых невозможно в относительно
кратком лекционном курсе.
В целом изложение рассчитано на учащихся, достаточно свободно владеющим стандарт-
ным аппаратом теории вероятностей, основанным на теории меры.

1 Введение. Общие положения


Источник случайности и моделирующие формулы. При моделировании случайных яв-
лений необходимо получать реализации случайных величин (и случайных векторов) с заданным
распределением. Мы не будем сейчас задаваться вопросом, существует ли на самом деле в на-
шем мире случайность (пусть этим занимаются философы) и зачем ее моделировать, а сразу
приступим к делу.
Ясно, что если мы хотим моделировать некоторое сложное случайное явление, то нам нужно
иметь достаточно простой и универсальный источник случайности. Здесь и далее мы предпола-
гаем, что источником случайности является (вообще говоря, бесконечная) последовательность
α1 , α2 , . . . независимых равномерно распределенных на отрезке (0, 1] случайных величин. Этот
выбор является общепринятым.3
Пусть теперь для простоты P — распределение, заданное на борелевских подмножествах пря-
мой. C чисто теоретической точки зрения промоделировать распределение4 P означает найти та-
кое n ≥ 1 и такую измеримую функцию f : (0, 1]n 7→ R, что случайная величина ξ = f (α1 , . . . , αn )
имеет распределение P (мы для краткости будем записывать этот факт как L(ξ) = P). Конеч-
но, это «определение» автоматически переносится на случай случайной величины, принимающей
значения в абстрактном измеримом пространстве (D, D). Удобно называть функцию f модели-
рующей функцией, а само равенство ξ = f (α1 , . . . , αn ) — моделирующей формулой.5
Как уже говорилось, такое «определение» является чисто теоретическим. С точки зрения
практики у него есть два дополнительных аспекта, относящихся к компьютерной реализации
методов моделирования.
Согласно теории вероятностей, случайная величина ξ — это измеримая функция ξ : (Ω, F) 7→
(R, BR ), где Ω — некоторое абстрактное множество (пространство элементарных событий), осна-
щенное σ-алгеброй F (σ-алгеброй событий), а BR — борелевская σ-алгебра подмножеств множе-
ства R. Что касается распределения P = Pξ случайной величины ξ, то оно является нормирован-
ной на единицу мерой, определенной на σ-алгебре BR равенством P(B) = P(ξ ∈ B), B ∈ BR .
Конечно, за исключением того простого случая, когда σ-алгебра F состоит из конечного числа
событий (а случайная величина ξ дискретна), таких объектов в природе просто не существует.
1
Мы будем употреблять термины «моделирование» и «генерирование» как синонимы.
2
Этот термин и вынесен в заголовок.
3
Существуют и другие подходы. Так, в статье Д.Кнута и Э.Яо [11] (см. также [10, гл. 15]) в качестве источни-
ка случайности рассматривается последовательность независимых случайных величин, имеющих симметричное
распределение Бернулли. См. также раздел 6, где кратко рассматриваются некоторые обобщения этого подхода.
4
Точнее — «промоделировать случайную величину, имеющую распределение P».
5
В дальнейшем мы увидим, что моделирующая функция может иметь даже бесконечное число аргументов, но
для понимания сути дела сейчас нам эти тонкости не нужны.

3
Поэтому не удивительно, что работая на компьютере и обращаясь к генератору псевдослу-
чайных чисел (или физическому генератору, это не важно), вы получаете не некую измеримую
функцию α1 , а просто какое-то число a1 ∈ (0, 1]. А если обращаетесь к генератору n раз, то
получаете (вместо n независимых равномерно распределенных на отрезке (0, 1] случайных вели-
чин α1 , . . . , αn ) числа a1 , . . . , an . Иначе говоря, найдя такую функцию f , что случайная величина
ξ = f (α1 , . . . , αn ) имеет заданное распределение и, реализовав это преобразование на компьютере,
вы получите на выходе число x = f (a1 , . . . , an ). И это тоже принято назвать моделированием.
Как согласуются эти два взгляда на моделирование? Согласование на самом деле хорошо
известно и традиционно для статистических исследований. Мы интерпретируем числа a1 , . . . , an
как независимые реализации случайных величин α1 , . . . , αn . Эти слова означают, что мы интер-
претируем процесс работы генератора как (независимый от всего предыдущего) выбор точки ω0 в
некотором абстрактном пространстве элементарных событий Ω. Тем самым ai = αi (ω0 ) и соответ-
ствие двух языков установлено. Иначе говоря, изучая теоретические свойства какого-то метода
моделирования, мы используем язык случайных величин и действуем, так сказать, до компью-
терного эксперимента, а после этого эксперимента работаем с полученными реализациями этих
случайных величин.6
Второй практический аспект моделирования связан с трудоемкостью вычислений. Одно и то-
же распределение P может быть промоделировано с помощью различных7 моделирующих функ-
ций, и естественно ожидать, что на это потребуются разные машинные ресурсы. Более того,
даже для фиксированной моделирующей формулы ξ = f (α1 , . . . , αn ) могут существовать раз-
личные способы вычисления функции f , требующие разных затрат. А поскольку стандартной
ситуацией является получение большой выборки (объема, скажем, тысяч или десятков тысяч) из
распределения P, то скорость вычисления функции f приобретает первостепенное значение.
Поэтому результатом решения задачи «промоделировать распределение P» является не про-
сто моделирующая функция, а подробно расписанный, обоснованный и проанализированный ал-
горитм моделирования.8

Язык описания алгоритмов моделирования. Для записи алгоритмов мы будем применять


условный язык, не совпадающий ни с одним языком программирования. В принципе, этот язык
достаточно прост и, возможно, не требует специальных пояснений. Тем не менее, учитывая спе-
цифику моделирования, мы приведем здесь его описание.
В наиболее полной записи каждый алгоритм состоит из следующих частей.
1. Название алгоритма (обычно это аббревиатура названия метода моделирования) и/или сло-
весное описание моделируемого распределения (расшифровка аббревиатуры).
2. Словесное описание входных и выходных данных алгоритма.
3. Тело алгоритма.
Тело алгоритма разбивается на строки, иногда занумерованные натуральными числами. Это
разбиение служит для удобства чтения алгоритма. Каждая строка должна быть достаточно крат-
кой и обозримой, хотя, конечно, конкретное деление на строки — дело условное. В начале каждой
строки, если это необходимо, может стоять краткий словесный комментарий, объясняющий смысл
производимых операций.
Текст, соответствующий каждой стоке, состоит из операторов, разделенных знаком « ; ». По-
рядок выполнения операторов естественный, если не оговорено противное. Перечислим основные
операторы и соглашения, используемые в алгоритмических описаниях.
6
Конечно, остается вопрос, насколько на самом деле числа a1 , . . . , an похожи на повторную независимую вы-
борку из равномерного распределения на отрезке (0, 1]. Этот вопрос относится к проверке качества генераторов
псевдослучайных чисел и пока нам не интересен.
7
Естественно, функции (0, 1]n 7→ R, совпадающие с точностью до n-мерной лебеговой меры ноль, мы не считаем
различными, так что на самом деле речь идет об различных классах эквивалентности моделирующих функций.
Поскольку на практике с этими тонкостями проблем не бывает, мы не будем дальше заострять на них внимание.
8
Строго говоря, окончательным результатом должна являться компьютерная программа моделирования, но мы
останавливаемся на алгоритмическом уровне, не вдаваясь в тонкости используемого языка программирования и
т.д. Еще точнее, часто будут описываться не алгоритмы в строгом смысле этого слова, а лишь их алгоритмические
схемы.

4
1. Оператор присвоения «a ← 1»;

2. Стандартные логические операторы «and» и «or».

3. Условный оператор: «If A then B» или «If A then B else C». Если A представляет собой
составной логический оператор, то этот оператор записывается в скобках: «If (A1 and A2 )
then B».

4. Оператор завершения STOP. Поскольку операции ввода и вывода в файл не предусмат-


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

5. Циклы организованы при помощи операторов вида «While A do . . . » (здесь A — логическое


выражение), «Do . . . while A» и «For i = m to n step a do . . . ». В случае, когда a = 1,
используется сокращенная запись «For i = m to n do . . . ».

6. В алгоритме разрешается проверка любых соотношений типа a = b, a < b, a ≤ b, a > b,


a ̸= b и т.д.

7. В алгоритме разрешается использовать все стандартные арифметические действия («a + b»,


«a − b», «a ∗ b», «a/b»), а также возведение в степень («a ∧ b»). Также можно использовать
любые стандартные функции (ln, cos, arctan, sqrt , ⌊ · ⌋, ⌈ · ⌉ и пр.). Полный список таких
функций мы устанавливать не будем.

8. Моделирование случайной величины, равномерно распределенной на отрезке (0, 1] реализу-


ется в алгоритме специальным оператором Get( · ). А именно, выражение Get(α) означает
получить реализацию α из равномерного распределения на (0, 1]. Иначе говоря, Get(α) обо-
значает обращение к генератору9 и присвоение результата этого обращения переменной α.10
Подразумевается, что последовательные применения оператора Get( · ) соответствуют по-
лучению независимых реализаций равномерного распределения. Для сокращения записи
иногда будут применяться операторы вида «Get(α1 , α2 )», что предполагается эквивалент-
ным «Get(α1 ); Get(α2 )».
Буква α (c индексом или без) зарезервирована для обозначения равномерно распределенной
на отрезке (0, 1] случайной величины. Наличие разных индексов у нескольких случайных
величин, обозначенных буквой α, подразумевает, что эти случайные величины независимы.

9. В алгоритм можно включать процедуры, предполагая, что они где-то уже описаны. Напри-
мер, если в алгоритме используется реализация случайной величины η, имеющей некоторое
распределение Q и если для структуры алгоритма не важно, каким способом эта реализа-
ция получена, то мы будем писать η ← Q( · ), где точка в качестве аргумента подчеркивает,
что мы имеет дело с моделированием, а не просто и с присвоением.11
Другие процедуры могут быть описаны словесно.

10. Использование выражений вида η ← Q( · ) предполагает, что у нас уже есть обозначения
для некоторого класса распределений. Приведем эти обозначения для наиболее употреби-
тельных распределений (точные определения распределений и их необходимые свойства
вводятся и обсуждаются в тех разделах, где говорится о моделировании этих распределе-
ний). Обозначения других распределений будут вводиться по мере надобности.
9
Под «генератором» здесь и далее понимается некий абстрактный механизм, поставляющий независимые реа-
лизации случайных величин, равномерно распределенных на (0, 1]. Этот термин перекидывает мостик к практи-
ческому моделированию, где используются так называемые генераторы псевдослучайных чисел.
10
Обычно генераторы псевдослучайных чисел требуют инициализации. Здесь это обстоятельство игнорируется.
11
В случае, когда мы имеем дело с некоторым стандартным распределением, последнее замечание может быть
проигнорировано. Например, допускается запись ξ ← N(0, 1).

5
• U(D) — равномерное распределение на измеримом подмножестве D евклидова про-
странства Rd (предполагается, что 0 < mesd (D) < ∞, где mesd — d-мерная мера Ле-
бега). В частности, обозначение U(a, b) используется для равномерного распределения
на отрезке (a, b).
• Un (X) — равномерное распределение на конечном множестве X, имеющем мощность
n (как обычно, природа множества X не имеет значения).
• Ber(p) — распределение Бернулли с параметром p ∈ (0, 1).
• Bin(n, p) — биномиальное распределение с параметрами (n, p), n ≥ 1, p ∈ (0, 1).
• Geom(p) — геометрическое распределение с параметром p ∈ (0, 1).
Здесь и далее под геометрическим распределением подразумевается распределение числа неудач (а не
числа испытаний) в испытаниях Бернулли с вероятностью успеха p до первого успеха. Иначе говоря,
наименьшее возможное значение случайной величины, имеющей распределение Geom(p), равно нулю.
• NB(k, p) — отрицательно-биномиальное распределение с параметрами (k, p), k > 0,
p ∈ (0, 1).
Как и в предыдущем случае, отрицательно-биномиальное распределение сосредоточено на множества
{0, 1, . . .}, причем каждое из этих чисел имеет положительную вероятность.
• Π(λ) — распределение Пуассона с параметром λ > 0.
• Exp(λ) — показательное (экспоненциальное) распределение с параметром λ.
Распределение предполагается параметризованным таким образом, что его математическое ожидание
равно 1/λ.
• Gamma(k, µ) — гамма-распределение с параметром формы k > 0 и параметром мас-
штаба µ > 0.
Отметим, что Gamma(1, µ) = Exp(µ).
• N(a, σ 2 ) — нормальное распределение с математическим ожиданием a ∈ R и дисперсией
σ 2 > 0.
• Nd (ā, Σ) — многомерное (d-мерное) гауссовское распределение со средним ā ∈ Rd и ко-
вариационной матрицей Σ. Формально Σ является произвольной симметричной неот-
рицательно определенной d × d матрицей.

Приведем теперь простой пример записи алгоритма моделирования.

Алгоритм BB (Binomial Bernoully)


Моделирование биномиального распределения Bin(n, p) через испытания Бернулли

Входные данные: n, p.
Результат: ξ.
1. (Инициализация) S ← 0;
( )
2. (Моделирование числа успехов) For i = 1 to n do Get(α); If α < p then S ← S + 1 ;
3. (Завершение) ξ ← S; STOP.
В алгоритме 1 переменная i (счетчик цикла) обозначает номер моделируемого испытания Бернулли,
а переменная S — (текущее) число успехов в этих испытаниях. Поскольку метод моделирования весьма
прост, специального обоснования алгоритма не требуется.12

Точные и приближенные методы. Мы будем заниматься только теоретически точными


алгоритмами моделирования и не будем рассматривать приближенные методы. Приближенные
методы моделирования могут быть весьма привлекательными, но их применять можно только
тогда, когда есть уверенность, что допускаемая ошибка не скажется на конечном результате.
12
Далее мы увидим, что это далеко не всегда так.

6
Иначе говоря, нужно учитывать особенности той задачи, ради решения которой применяется
моделирование.
Например, в ряде учебников в качестве хорошего приближенного метода моделирования стан-
дартного нормального распределения N(0, 1) предлагается такой прием. Моделируются случай-
ные величины α1 , . . . , αn , и в качестве случайной величины, приближенно √ имеющей распределе-
ние N(0, 1), берется случайная величина η (n) = (α1 + . . . + αn − n/2)/ n/12. При n = 12 эта
формула выглядит особенно привлекательно: η (12) = (α1 + . . . + α12 ) − 6.
Действительно, Центральная Предельная Теорема (теорема П. Леви) утверждает, что при
n → ∞ распределение случайной величины η (n) слабо сходится к N(0, 1), а более внимательный
анализ показывает, что плотность распределения случайной величины η (12) близка к плотности
распределения N(0, 1) в довольно широкой окрестности нуля. В то же время η (12) ∈ (−6, 6) c
вероятностью 1, а носитель нормального распределения — вся прямая.
Отсюда становится ясно, что если в решаемой задаче существенным является лишь поведение
плотности нормального распределения в окрестности нуля, то применение случайной величины
η (12) вместо случайной величины ξ ∈ N(0, 1) может быть оправдано. Если же на результат ока-
зывают влияния очень редкие события типа {ω : |ξ(ω)| > 10}, то использовать η (12) нельзя.
Кроме этого общего соображения есть и другое, более профессиональное. Считается, что если
есть некоторый приближенный метод моделирования распределения P, то на его основе можно
придумать теоретически точный метод, имеющий практически те же характеристики (например,
быстродействие). Конечно, доказать такое утверждение во всей его полноте невозможно.

Две характеристики алгоритмов моделирования. Учитывая эти обстоятельства, мы бу-


дем рассматривать две основные характеристики алгоритмов моделирования: трудоемкость и
требуемую память. Трудоемкость C (от complexity, сложность) описывает поведение (среднего)
времени выполнения программы, написанной согласно рассматриваемому алгоритму. Конечно,
здесь не может идти речь о каких-то точных числах, имеется в виду общий характер поведения
этого времени в зависимости от параметров распределения (или в сравнении с другими мето-
дами). Важность такой характеристики как трудоемкость объясняется тем, что моделирование
распределений обычно осуществляется много раз в больших циклах. В серьезных задачах ско-
рость моделирования оказывается важным фактором даже на современных компьютерах.
Например, трудоемкость алгоритма BB пропорциональна числу обращений к генератору,
которое равно n. В то же время эта трудоемкость мало зависит от параметра p (от значения
p зависит только число присвоений S ← S + 1, поскольку это быстрая операция, ею можно
пренебречь). Таким образом мы можем написать, что для алгоритма BB выполнено соотношение
C = C(n, p) ≍ n равномерно по p.13 Тем самым алгоритм будет обладать малым быстродействием
при больших n.
Что касается требуемой памяти M (memory), то для алгоритма BB все очень просто: M =
O(1), так как практически вся память идет на хранение тела программы. Может показаться,
что для современных компьютеров величина M не имеет большой роли. Однако при решении
сложных задач, когда моделирование различных распределений является лишь одной из многих
составных частей всей программы, необходимо следить и за этой характеристикой.

Табличные и нетабличные методы. Несколько условное деление методов моделирования на


табличные и нетабличные не является совершенно четким, но может оказаться полезным. Дело
в том, что алгоритмы моделирования могут быть использованы на практике, грубо говоря, в двух
ситуациях.14 Одна из них состоит в том, что один и тот же алгоритм без изменений работает в
цикле. Иначе говоря, нам нужно промоделировать одно и тоже распределение много (на прак-
тике — тысячи и десятки тысяч) раз. В этом случае имеет смысл один раз провести некоторую
предварительную работу с тем, чтобы до предела убыстрить собственно моделирующую часть
программы, которая и будет работать в цикле. Поскольку эта предварительная работа часто (но
13
Для положительных последовательностей an и bn пишут an ≍ bn , если отношение an /bn отделено от нуля и
бесконечности. Иначе говоря, в этом случае предполагается, что 0 < c1 ≤ an /bn ≤ c2 < ∞ при достаточно больших
n для некоторых постоянных c1 , c2 .
14
Бывают и промежуточные случаи.

7
не всегда) сводится к вычислению некоторых таблиц (массивов), то такие методы называются
табличными.
Для табличных методов естественно разделять трудоемкость предварительной и моделирую-
щей частей алгоритма, причем главную роль имеет трудоемкость моделирующей части, так как
она выполняется много раз, а предварительная — только один.
Другая ситуация возникает, когда распределение нужно промоделировать один или небольшое
число раз. Тогда нет необходимости отделять предварительную часть алгоритма, которая часто
бывает весьма трудоемка, от моделирующей части. Подобного рода алгоритмы будем называть
нетабличными.
Стандартный пример «нетабличной ситуации» возникает, когда нужно моделировать распре-
деление, зависящее от параметров, причем параметры не являются фиксированными, а могут
меняться в процессе счета. Тогда результат работы предварительной части алгоритма тоже бу-
дет зависеть от параметров (которые и подаются на вход алгоритма), и разделение алгоритма на
предварительную и моделирующую части становится бессмысленным.
Алгоритм BB, конечно же, не является табличным — поскольку на вход алгоритма подаются
лишь параметры n и p, они вполне могут измениться при следующем обращении к программе
моделирования.
Ясно, что при сравнении алгоритмов, моделирующих одно и тоже распределение, нужно срав-
нивать «табличные» методы с «табличными», а «нетабличные» методы с «нетабличными». Срав-
нение табличных методов с нетабличными большого смысла не имеет.

8
2 Табличные методы моделирования дискретных распределений
2.1 Таблицы дискретных распределений
В этом разделе мы будем рассматривать табличные методы моделирования конечных дискрет-
ных распределений. А именно, будем считать, что существует такое конечное подмножество X
множества15 R, что P(X) = 1. Конечно, в этом случае распределение P определяется набором
чисел px = P({x}) при x ∈ X. Удобно считать, что все числа px положительны. Тогда, обозначив
n = card X и перенумеровав в каком-то порядке элементы множества X, мы можем представить
распределение P в виде таблицы распределения
( )
x1 . . . xk . . . xn
P: , (2.1.1)
p 1 . . . pk . . . p n

где X = {x1 , . . . , xn }, pn = P({xn }) и nk=1 pk = 1.
Из этого описания следует, что распределение P порождает много таблиц распределения,
каждая из которых однозначно определяет P. В некоторых случаях существует «естественная»
таблица распределения. Например, если X представляет собой множество, состоящее из первых
n членов натурального ряда, то естественно положить xi = i (хотя, конечно, можно взять и
xi = n − i + 1).
Все табличные методы моделирования конечных дискретных распределения основываются на
некоторой таблице распределения и имеют на входе число n и два массива x1 , . . . , xn и p1 , . . . , pn .16
При этом для некоторых из этих методов результат не зависит от вида таблицы (2.1.1), а для
других — зависит.
Среди последних наиболее популярен так называемый метод обратных функций.17 Его мы и
будем сейчас рассматривать.

2.2 Табличный метод обратных функций


Пусть конечное дискретное распределение задано таблицей (2.1.1). Положим si = p1 + . . . + pi
при 0 ≤ i ≤ n (обычно эти числа называют накопленными вероятностями). Очевидно, s0 = 0 и
sn = 1. Метод обратных функций задается моделирующей функцией f : (0, 1] 7→ X такой, что

f (x) = xi , если si−1 < x < si ; i = 1, . . . , n. (2.2.1)

Поскольку P(α = si ) = 0, то значения функции f в точках si не имеют значения, поэтому в (2.2.1)


они опущены. Обычно полагают f (si ) = xi−1 или f (si ) = xi в зависимости от удобства записи
алгоритма. В дальнейшем мы тоже будем так поступать, специально это не оговаривая.
Ясно, что вид этой функции существенно зависит от порядка, приписываемого элементам
множества X. Соответствующая моделирующая формула может быть записана в виде


n
ξ= xi I(si−1 ,si ] (α), (2.2.2)
i=1

где IA (x) обозначает индикатор множества A, равный 1 или 0 в зависимости от того, принадлежит
x множеству A или нет.
Формула (2.2.2) проясняет суть дела. Отрезок (0, 1] делится на n отрезков (окон) вида (si−1 , si ].
Если α попадает в i-е из этих окон, то случайная величина ξ принимает значение xi . Поскольку
длина окна (si−1 , si ] равна pi , а все числа xj различны, то P(ξ = xi ) = pi .
Хотя моделирующая функция (2.2.1) (и, следовательно, моделирующая формула (2.2.2)) од-
нозначно определяется таблицей распределения (2.1.1), существует много способов вычисления
15
Вообще говоря, природа множества X не имеет значения: его элементами могут быть вектора, картинки, слова
и т.д. Нам удобнее везде считать, что X ⊂ R. В дальнейшем множество X, вне зависимости от того, является ли
оно конечным или счетным, мы будем называть носителем дискретного распределения P.
16
Конечно, нам достаточно знать числа p1 , . . . , pn−1 , но мы будем пренебрегать такой экономией.
17
Происхождение этого названия будет объяснено позже.

9
этой функции в произвольной точке x. На самом деле, конечно, речь идет о различных спосо-
бах поиска интервала (si−1 , si ], содержащего точку x, а «произвольность» x означает, что вместо
числа x мы рассматриваем случайную величину α, равномерно распределенную на (0, 1].
Прежде чем исследовать эти способы в общем виде, рассмотрим один частный случай.

2.2.1 Простейший табличный метод


Начнем с совсем простой ситуации. Пусть в таблице распределения (2.1.1) все pi одинаковы (и,
следовательно, равны 1/n). Тогда P является равномерным распределением на множестве X, то
есть P = Un (X).
Поскольку18 P(⌈nα⌉ = k) = 1/n при k = 1, . . . , n, то распределение P очень просто моделиру-
ется. Запишем сразу соответствующий алгоритм.

Алгоритм Un (X) (Uniform on X)


Моделирование равномерного распределения на множестве X = {x1 , . . . , xn }

Входные данные: n, массив (x1 , . . . , xn ).


Результат: ξ.
1. (Выбор номера окна) Get(α); τ ← ⌈n ∗ α⌉;
2. (Результат) ξ ← xτ ; STOP.
Так как случайная величина τ равномерно распределена на множестве {1, . . . , n}, то специаль-
ного обоснования этот алгоритм не требует. Обсудим теперь свойства этого алгоритма. Прежде
всего алгоритм реализует метод обратных функций, так как ξ = xi тогда и только тогда, когда
α ∈ (i/n, (i + 1)/n].
Далее, алгоритм не является табличным (предварительная часть алгоритма отсутствует).
Требуемая память M имеет вид n + O(1), так как нужно держать в памяти числовой массив X.19
Что касается трудоемкости, то тут возникают некоторые условности, связанные со скоростью
вычисления значений различных функций на компьютере. В данной ситуации нам нужно знать,
сильно ли зависит скорость вычисления функции ⌈ · ⌉ от значений аргумента. Принято считать,
что в широком диапазоне значений x время вычисления значения ⌈x⌉ меняется мало.20 Если
принять это предположение, то трудоемкость алгоритма Un (X) окажется почти независимой от
n. Таким образом, мы будем читать, что C = O(1).
Развивая идею алгоритма Un (X), мы приходим к простейшему табличному методу21 мо-
делирования распределения (2.1.1) при условии, что вероятности pi имеют вид Ni /N , где N =
N1 + . . . + Nn и Ni — целые положительные числа. Иначе говоря, мы рассматриваем таблицу
распределения вида ( )
x1 ... xk ... xn
P: . (2.2.3)
N1 /N . . . Nk /N . . . Nn /N
Предполагается, что на вход алгоритма поступают целые Ni (а не вещественные pi = Ni /N ).
Идею (и обоснование) метода можно описать следующим образом. Сформируем массив («таб-
лицу») T1 , . . . , TN , таким образом, что


l−1 ∑
l
T j = xl при Ni < j ≤ Ni , l = 1, . . . , n. (2.2.4)
i=1 i=1
18
Проверьте!
19
Здесь используются два предположения. Во-первых, мы предположили, что xi ∈ R. Если, скажем, xi — d-
мерные вектора, то M будет иметь вид dn+O(1). Во-вторых, если число xi легко вычисляется по значению индекса
i (запишем это как xi = h(i)), то массива (x1 , . . . , xn ) вообще заводить не нужно, а в алгоритме вместо ξ ← xτ
появится ξ ← h(τ ). (Ярким примером этой ситуации является случай xi = i.) Тогда M = O(1). В дальнейшем мы
будем вспоминать об этих обстоятельствах только тогда, когда они будут действительно существенны.
20
И вычислительные эксперименты это подтверждают.
21
Согласно терминологии [10] — table look-up method.

10
Массив (2.2.4) устроен очень просто: первые N1 его элементов равны x1 , вторые N2 равны x2
и т.д. Обозначим τ = ⌈N α⌉. Тогда, как легко видеть, случайная величина ξ = Tτ будет иметь
распределение (2.2.3). Действительно,
( l−1 )
∑ ∑
l
P(ξ = xl ) = P(Tτ = xl ) = P Ni < τ ≤ Ni = Nl /N,
i=1 i=1

так как случайная величина τ равномерно распределена на множестве {1, . . . , N }.22 Конечно, опи-
санный метод — это метод обратных функций.23 Запишем соответствующий алгоритм, поместив
в предварительную часть формирование массива Tj .

Алгоритм TS (Table Simplest)


Моделирование конечного дискретного распределения с pi = Ni /N , (i = 1, . . . , n, N = N1 + . . . + Nn )

Предварительные операции: формирование массива (T1 , . . . , TN )

Входные данные: N , массивы (x1 , . . . , xn ) и (N1 , . . . , Nn ).


Результат: массив (T1 , . . . , TN ).
1. (Инициализация) i ← j ← 1; k ← N1 ;
2. (Запись чисел xj в массив) While k ≤ N do
• While i ≤ k do (Ti ← xj ; i ← i + 1);
• j ← j + 1; k ← k + Nj ;
3. (Завершение) STOP.

Моделирование

Входные данные: N , массив (T1 , . . . , TN ).


Результат: ξ.
1. (Выбор номера окна) Get(α); τ ← ⌈N ∗ α⌉;
2. (Результат) ξ ← Tτ ; STOP.
Моделирующая часть комментариев не требует — она точно такая же, как алгоритм Un (X).
Обсудим предварительную часть алгоритма. Заполнение массива (T1 , . . . , TN ) происходит после-
довательно блоками. Блок номер j состоит из Nj одинаковых чисел xj , всего блоков n. Перемен-
ная j алгоритма — счетчик числа блоков, переменная i — счетчик номера элемента в массиве
(T1 , . . . , TN ). Переменная k ответственна за переход от блока к блоку — как только номер i пре-
вышает текущее значение k, число xj меняется на xj+1 . Останов организован по переменной k.
Алгоритм TS имеет ярко выраженный табличный характер. При больших N и n его пред-
варительная часть может оказаться весьма трудоемкой, в то время как моделирующая (с уче-
том наших соглашения о скорости вычисления значений функции ⌈ · ⌉) обладает трудоемкостью
C = O(1). Поскольку подразумевается, что предварительная часть алгоритма отрабатывает толь-
ко один раз, а моделирующая — много раз, то принято общую трудоемкость алгоритма опреде-
лять по его моделирующей части.
Тем самым по быстродействию метод является очень привлекательным. Подводный камень
обнаружится, когда мы проанализируем память M , которая (опять-таки для моделирующей ча-
сти алгоритма) равна N + O(1). А число N — знаменатель в представлении pi = Ni /N . Ясно, что
этот знаменатель может быть очень большим.
22
На самом деле этот метод отличается от описанного выше метода моделирования дискретного равномерного
распределения на конечном множества T = (T1 , . . . , TN ) только тем дополнительным допущением, что некоторые
значения Ti могут совпадать.
23
А почему?

11
Более того, у этого алгоритма наблюдается весьма неестественное свойство, которое (для
наглядности) лучше проиллюстрировать на примере. Возьмем n = 2 и рассмотрим распределение
( )
x1 x2
P:
p1 p2

с p1 = 3/10 и p1 = 7/10 Для моделирования этого распределения методом TS требуется массив


T длины N = 10. Это, конечно, совсем немного.
Изменим теперь эти вероятности: положим p1 = (3 · 105 + 1)/106 и p2 = (7 · 105 − 1)/106 .
Вероятности изменились на 10−6 , а длина N вспомогательного массива подскочила до 106 ! Полу-
чается, что алгоритм TS обладает большой неустойчивостью памяти: грубо говоря, чем меньше
мы меняем вероятности, тем бо́льшая нам требуется память. Конечно, это странное свойство.
Сделаем вывод. Хотя алгоритм TS и является быстрым, область его применения сильно огра-
ничена величиной знаменателя N в представлении pi = Ni /N . А поскольку n ≤ N (все вероятно-
сти должны быть положительны), то и число значений моделируемого распределения не может
быть слишком большим.
Возвратимся теперь к методу обратных функций для моделирования общего конечного дис-
кретного распределения вида (2.1.1).

2.2.2 Последовательный метод обратных функций


Ввиду своей простоты и наглядности последовательный метод обратных функций занимает (не
слишком ему соответствующее) первое место во многих учебниках по моделированию. Рассмот-
рим формулу (2.2.2) и положим
∑n
τ= i I(si−1 ,si ] (α). (2.2.5)
i=1

Согласно (2.2.5) значение τ равно номеру i того окна (si−1 , si ], куда попадает α. Легко видеть,
что τ может быть представлено в виде

τ = min{i : α ≤ si }. (2.2.6)

Действительно, если si−1 < α ≤ si (это эквивалентно τ = i), то α > sj при всех j < i, и α < sj
при всех j > i. Формула (2.2.6) наводит на мысль, что можно вычислять τ , последовательно
сравнивая α с s1 , s2 , и так далее до тех пор, пока первый раз не реализуется неравенство α ≤ si
при каком-то i. Полученное число i и есть значение τ .24
Это идея и стоит в основе последовательного метода обратных функций. Запишем соответ-
ствующий алгоритм. Поскольку у нас распределение предполагается заданным своей таблицей,
а для вычисления τ нам нужны не вероятности pi , а накопленные вероятности si , то отнесем
вычисление накопленных вероятностей в предварительную часть алгоритма.25

Алгоритм TIS (Table Inverse Sequential)


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

Предварительные операции: формирование массива накопленных вероятностей (s1 , . . . , sn )

Входные данные: n, массив (p1 , . . . , pn ).


Результат: массив (s1 , . . . , sn ).
1. (Инициализация) i ← 1; s1 ← p1 ;
( )
2. (Вычисление накопленных вероятностей) While i ≤ n do i ← i + 1; si ← si−1 + pi ;
3. (Завершение) STOP.
24
Так как P(α = sj ) = 0, то, в принципе, не важно, проверять ли выполнения неравенств α ≤ sj или α < sj . Мы
все равно получим распределение (2.1.1).
25
Конечно, вычислять si можно и в моделирующей части при помощи рекуррентного соотношение si = si−1 + pi ,
но в табличных методах считается грамотным выносить в предварительную часть все, что можно, — это хоть
немного, но убыстрит моделирование.

12
Моделирование

Входные данные: массивы (x1 , . . . , xn ) и (s1 , . . . , sn ).


Результат: ξ.
1. (Инициализация) Get(α); i ← 1;
2. (Поиск интервала) While α > si do i ← i + 1;
3. (Завершение) ξ ← xi ; STOP.
Проанализируем свойства этого алгоритма.26 Требуемая память M (согласно нашей догово-
ренности) равна, конечно, 2n + O(1). Что касается трудоемкости, то она определяется числом
шагов в цикле «Поиск интервала». Поскольку в каждом шаге цикла основной операцией яв-
ляется проверка неравенства α > si , то можно сказать, что трудоемкость определяется числом
проверок этих неравенств. Но число этих сравнения зависит от α и, следовательно, случайно.
Действительно, если α ≤ s1 , то алгоритм заканчивает работу после одной проверки, а если
α > sn−1 , то требуется n проверок. Легко видеть,27 что на самом деле число сравнений равно τ ,
где τ определено в (2.2.5).
Здесь мы видим существенное отличие стохастических алгоритмов от детерминированных:
если считать, что и в том и в другом случае трудоемкость определяется числом каких-то основных
операций, то в детерминированных алгоритмах (при фиксации всех параметров) это число четко
определено, а стохастическом алгоритме может быть случайным.28 В этом случае трудоемкость
считают пропорциональной среднему числу таких операций.
В нашем случае
∑n
C ≍ Eτ = ipi . (2.2.7)
i=1

Видно, что трудоемкость C зависит не только от моделируемого распределения P, но и от таб-


лицы его распределения, то есть от способа упорядочивания вероятностей p1 , . . . , pn . Например,
если p1 близко к 1, то с большой вероятностью алгоритм TIS закончит свою работу за 1 шаг, а
если pn ≈ 1, то с вероятностью, близкой к 1, ему понадобится n шагов. Иначе говоря, при фик-
сированном n величина Eτ , определяющая трудоемкость последовательного метода обратных
функций удовлетворяет неравенству
1 < Eτ < n (2.2.8)
в зависимости от моделируемого распределения P. При этом обе границы точны в том смысле,
что Eτ может быть как сколь угодно близкой к 1, так и сколько близкой к n.29
Таким образом, при фиксированном большом n в зависимости от распределения P и от вы-
бранной таблицы этого распределения алгоритм TIS может быть как очень быстрым, так и очень
медленным. Это, конечно, не очень хорошее свойство.
Если трудоемкость алгоритма зависит от параметров, имеет смысл изучать не только самый лучший
и самый худший случаи, но и некоторую «среднюю» ситуацию. Поясним, как это можно делать для
алгоритма TIS. Рассмотрим случайных вектор (π1 , . . . , πn ) такой, что π1 +. . .+πn = 1 и предположим, что
распределение этого вектора не меняется после любой перестановки координат. Это означает, в частности,
что все πi имеют одинаковое распределение. Поэтому Eπi = 1/n. Если в алгоритме TIS взять вместо
исходных вероятностей p1 , . . . , pn случайные величины π1 , . . . , πn , то правая часть (2.2.7) станет случайной
величиной. А среднюю трудоемкость алгоритма естественно считать пропорциональной математическому
ожиданию этой случайной величины. Оно, конечно, равно (1 + 2 + . . . + n)/n = (n + 1)/2. То есть в среднем
трудоемкость алгоритма растет с ростом n линейно, хотя и в 2 раза медленнее, чем для самых «плохих»
распределений.
26
Поскольку sn = 1, то в предварительной части эту величину можно было не вычислять, а в моделирующей
части не проводить проверку очевидного равенства α < sn . Выигрыш, однако, мог бы получить совсем малень-
кий, а, как окажется в дальнейшем, структура приведенной моделирующей части алгоритма TIS удобна и для
моделирования дискретных распределений с бесконечным носителем.
27
Действительно?
28
А может и не быть, см. Алгоритм BB.
29
Поскольку мы предположили, что все вероятности pi положительны, то ни одна из границ точно достигаться
не может.

13
В случае, когда распределение P фиксировано, возникает естественный вопрос: как выбрать
такую таблицу этого распределения, чтоб получившаяся трудоемкость алгоритма TIS была наи-
меньшей? Ответ, в общем, является понятным: нужно упорядочить вероятности p1 , . . . , pn по
убыванию. Докажем этот простой факт в случае, когда носитель дискретного распределения P
не обязательно является конечным.

Лемма 1. Пусть p1 . . . , pn , . . . — положительные числа, в сумме дающие 1. Обозначим p∗i ре-


зультат упорядочивания чисел pi по убыванию. Тогда
∑ ∑
ipi ≥ ip∗i . (2.2.9)
i≥1 i≥1

Доказательство. Положим qi = j≥i pi . Тогда, представляя ipi как pi + . . . + pi (i раз) и, груп-
пируя нужным образом члены полученного ряда, получим
∑ ∑
ipi = (p1 + . . . + pn + . . .) + (p2 + . . . + pn + . . .) + . . . (pi + . . . + pn + . . .) + . . . = qi .
i≥1 i≥1

def ∑
Поэтому достаточно доказать, что qi∗ = j≥i p∗i ≤ qi . Но 1 − qi = p∗1 + . . . + p∗i−1 ≥ p1 + . . . + pi−1 =
1 − qi (слева — сумма j − 1 наибольших из p1 , . . . , pn , . . . чисел, справа — сумма первых из них).
Поэтому утверждение доказано.

Вернемся к моделированию. Из утверждения Леммы 1 следует, что, предварительно упорядо-


чив по убыванию вероятности pi = P({xi }), перейдя к соответствующей таблице распределения
и применив после этого последовательный метод обратных функций, мы уменьшим исходную
трудоемкость (2.2.7).
На этом основан прием, который приводит к модифицированному последовательному методу
обратных функций. При этом предполагается, что входными данными для алгоритма все равно
являются массивы (xi , . . . , xn ) и (p1 , . . . , pn ). Иначе говоря, мы считаем, что существует какая-то
естественная упорядоченность чисел xi , не связанная с величиной вероятностей pi .30
Не приводя полностью соответственного алгоритма, обозначим лишь его структуру.

Алгоритм TISM (Table Inverse Sequential Modified)


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

Предварительные операции

Входные данные: n, массивы (p1 , . . . , pn ) и (x1 , . . . , xn ).


Результат: массивы (x∗1 , . . . , x∗n ) и (s∗1 , . . . , s∗n ).
В предварительные операции входят:
1. Упорядочивание по убыванию чисел p1 , . . . , pn вместе с одновременной перестройкой массива
(x1 , . . . , xn ).
Результаты — массивы (p∗1 , . . . , p∗n ) и (x∗1 , . . . , x∗n );
2. Вычисление новых накопленных вероятностей s∗i = p∗1 + . . . p∗i .
Результат — массив (s∗1 , . . . , s∗n ).

Моделирование

Входные данные: массивы (x∗1 , . . . , x∗n ) и (s∗1 , . . . , s∗n ).


Результат: ξ.
Эта часть алгоритма TISM получается из моделирующей части алгоритма TIS заменой si , xi на
s∗i , x∗i .
30
Если, например, xi = i, то такое предположение совершенно естественно.

14
Посмотрим, что происходит с трудоемкостью метода TISM. Легко показать, что теперь при
фиксированном n вместо (2.2.8) мы имеем неравенство 1 < Eτ ≤ (n+1)/2, причем правая граница
достигается на дискретном равномерном ∑nраспределении. Докажем
∑k это.
Пусть p1 ≥ p2 ≥ . . . ≥ pn > 0 и p i = 1. Тогда p i ≥ k/n. Действительно, если
∑k i=1 i=1

∑i=1 pi < k/n, то pk < 1/n (остальные вероятности в этой сумме не меньше pk ) и, следовательно,
n
i=k+1 pi ≤ (n − k)pk < (n − k)/n. Поэтому сумма всех вероятностей pi оказывается меньше 1.
Таким образом, применение модифицированного метода обратных функций приводит к умень-
шению трудоемкости моделирования самого «плохого» распределения примерно в 2 раза.

Замечание 1. Обсудим некоторые особенности алгоритма TISM.


1. Прежде всего, моделирующая функция алгоритма TISM отличается (вообще говоря) от мо-
делирующей функции соответствующего алгоритма TIS, так как методы определяются не мо-
делируемыми распределениями, а таблицами этих распределений. Таким образом, уменьшение
трудоемкости при переходе от TIS к TISM достигается не более совершенным способом вычис-
ления моделирующей функции, а изменением этой функции.
2. При pi = 1/n моделирующие функции алгоритмов совпадают. Более того, они совпадают с мо-
делирующей функцией алгоритма Un (X). Тем самым мы получили первый пример, когда разные
способы вычисления одной и той же моделирующей функции приводят к разительно отличаю-
щимся трудоемкостям.
3. Если xi = i, то метод TIS при соответствующей переделке требует n + O(1) ячеек памяти.
Будучи модифицированным до TISM он потребует уже 2n + O(1) ячеек. В некоторых ситуациях
это может оказаться существенным.

2.2.3 Метод дихотомии


Поскольку метод обратных функций сводится к нахождению номера τ окна, куда попадает слу-
чайная величина α, а число окон конечно, то естественно попробовать искать это окно методом
дихотомии31 .
Суть метода состоит в следующем. Сначала находится число n1 , примерно равное n/2 (конеч-
но, при нечетном n это можно делать разными способами). Затем проверяется условие α ≤ sn1
(напомним, что накопленные вероятности считаются уже вычисленными). Если это неравенство
выполняется, то следующая проверка происходит с n2 ≈ n1 /2, в противоположном случае берет-
ся n2 ≈ n1 + (n − n1 )/2 = (n + n1 )/2 и т.д. В результате каждой итерации мощность множества
индексов I, которому принадлежит случайная величина τ , уменьшается примерно в 2 раза вне
зависимости от значений вероятностей pi . Приведем один из вариантов реализации этой идеи.

Алгоритм TID (Table Inverse Dichotomy)


Моделирование конечного дискретного распределения методом дихотомии

Предварительные операции: формирование массива накопленных вероятностей (s1 , . . . , sn )

Входные данные: n, массив (p1 , . . . , pn ).


Результат: массив (s1 , . . . , sn ).
Алгоритм совпадает с предварительной частью алгоритма TIS.

Моделирование

Входные данные: n, массивы (x1 , . . . , xn ) и (s1 , . . . , sn ).


Результат: ξ.
1. (Инициализация) Get(α); i ← 1; j ← n;
2. (Дихотомия) While i < j do
• k ← ⌊(i + j)/2⌋; If α ≤ sk then j ← k else i ← k + 1;
3. (Завершение) ξ ← xi ; STOP.
31
В англоязычной литературе — bisection method, поэтому иногда используется термин «метод бисекции».

15
Прокомментируем структуру алгоритма TID. Переменные i и j задают (текущее) множество
I = {i, . . . , j}, которому принадлежит τ . Поэтому начальные значения есть i = 1 и j = n, а останов
происходит при i = j. Разбиение множества I на 2 части проводится вычислением k = ⌊(i + j)/2⌋.
В зависимости от того, в какую из этих частей попало τ (проверка этого осуществляется при
помощи неравенства α ≤ sk ), идет пересчет левой или правой границы множества I.
Оценим сверху трудоемкость алгоритма TID, по прежнему соотнося ее с числом T проверок
неравенств α ≤ sk или, что тоже самое, числом делений множества {1, . . . , n} на две части. Если
текущее множество I имеет вид {i, . . . , j}, то оно состоит из l = i − j + 1 элементов и разбивается
выбором числа k = ⌊(i + j)/2⌋ на два подмножества, имеющих соответственно k − i + 1 и j − k
элементов. Легко видеть, что оба этих числа лежат между (l − 1)/2 и (l + 1)/2.
Таким образом, за m шагов алгоритма мощность множества, локализующего положение слу-
чайной величины τ , не будет превосходить величины max(1, Tm + ), где

+
Tm = n/2m + 1/2 + . . . + 1/2m < n/2m + 1, (2.2.10)

и будет не меньше, чем



Tm = n/2m − 1/2 − . . . − 1/2m > n/2m − 1.

Из (2.2.10) следует, что любое число m, при котором 2m > n, является оценкой сверху трудоем-
кости алгоритма. Минимальное такое m равно ⌊log2 (n)⌋ + 1. В то же время неравенство Tm− > 1

удовлетворяется, как нетрудно видеть, при m < ⌈log2 (n)⌉ − 1.


Таким образом, в алгоритме TID для величины T выполнено неравенство

⌈log2 (n)⌉ − 1 < T ≤ ⌊log2 (n)⌋ + 1 (2.2.11)

и, следовательно, трудоемкость имеет вид C ≍ log2 n при n → ∞.


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

1. трудоемкость C алгоритма TID практически не зависит от распределения P при фиксиро-


ванной мощности n носителя этого распределения;

2. трудоемкость C растет медленно (логарифмически) с ростом n, в то время как в алгоритме


TIS рост средней трудоемкости — линейный.

2.2.4 Метод Чжень


Описанные выше варианты метода обратных функций являются вполне традиционными. В этом
разделе мы опишем метод Чжень,32 гораздо менее известный, очень естественный, простой для
реализации, и за счет увеличения требуемой памяти приводящий к неожиданно малой трудоем-
кости. Этот метод восходит к статье H. C. Chen and Y. Asau [12].
Идея метода следующая. Рассмотрим таблицу распределения (2.1.1), вычислим накопленные
вероятности si , выберем некоторое натуральное m > 1 и разобьем отрезок (0, 1] на отрезки (ло-
кализующие окна) вида Ωj = ((j − 1)/m, j/m], j = 1, . . . , m. Номер ν локализующего окна, куда
попадает случайная величина α, найти очень просто: ν = ⌈mα⌉.
Накопленные вероятности si разбивают окно Ων на несколько интервалов, и все, что нам оста-
лось — это найти, в какой из этих интервалов попала случайная величина α. Таким образом, мы
возвращаемся к исходной постановке задачи, но вместо отрезка (0, 1] имеем дело со (случайным)
отрезком длины 1/m, который при больших m разбит, вообще говоря, на гораздо меньшее число
отрезков, чем исходный.
Прежде чем оформлять эту идею в виде алгоритма, проиллюстрируем ее на простом примере.
Возьмем n = 5 и рассмотрим таблицу распределения (2.1.1) с вероятностями p1 = 1/6, p2 = 1/4,
p3 = 5/12 и p4 = p5 = 1/12. Накопленные вероятности равны s1 = 1/6, s2 = 5/12, s3 = 5/6 и
32
в [10, Гл. III.2.4] употребляется термин the method of guide tables.

16
s4 = 11/12 (как всегда, s0 = 0 и s5 = 1). Соответствующая моделирующая функция несколько
условно изображена на Рис. 1.
Теперь выберем m = 4 и разобьем отрезок (0, 1] на «окна» вида ((i − 1)/4, i/4], i = 1, . . . , 4.
(границы этих окон отмечены жирными точками). Случайная величина ν = ⌈4α⌉ задает нам
номер окна, куда попала α. Если ν = 1, то моделируемая случайная величина ξ может принять
значение x1 (при α ≤ s1 ) или x2 (при α > s1 ). Аналогично, если ν = 2 то либо ξ = x2 при α ≤ s2
либо ξ = x3 при выполнение противоположного неравенства. А если ν = 3, то однозначно ξ = x3 .
Таким образом, вычислив значение ν, мы, вообще говоря, значительно сужаем область нашего
поиска. Осталось понять, как можно организовать этот новый поиск.
x3 x5
x1
x2
x4
r c r c r r c c r
0 s1 1/4 s2 1/2 3/4 s3 s4 1

Рис. 1: Иллюстрация к методу Чжень

Вернемся к общему случаю и определим

rj = min{i : si > (j − 1)/m} для j = 1, . . . , m.

Кроме того, для удобства положим rm+1 = n. Смысл чисел rj понятен: если промежуток Ωj =
((j − 1)/m, j/m] содержит какие-нибудь накопленные вероятности, то rj — номер наименьшей из
них, если же нет, то rj = rj+1 .
Иначе говоря, окно Ωj содержит накопленные вероятности si с номерами i = rj , . . . , rj+1 − 1,
и знание чисел r1 , . . . , rm+1 дает нам полную информацию о распределении накопленных веро-
ятностей si между различными окнами.
Так, в примере Рис. 1 мы видим, что r1 = 1 (это всегда так по определению), r2 = 2, r3 =
r4 = 3 и r5 = 5 (тоже по определению). Отсюда, например, мы видим, что окно (0, 1/4] разбито
накопленными вероятностями на r2 − r1 + 1 = 2 части, окно (1/4, 1/2] — тоже на две части, в окне
(1/2, 3/4] накопленных вероятностей не содержится (так как r3 = r4 ), а последнее окно разбито
на r5 − r4 + 1 = 3 части.
Зная номер локализующего окна j и номер i = rj первой накопленной вероятности, пре-
восходящей левую границу (j − 1)/m этого окна, остается определить, в какой из интервалов,
разбивающих накопленными вероятностями окно Ωj , попала случайная величина α. Алгоритми-
чески проще всего это сделать последовательно, начиная с проверки неравенства α > si и затем
(в случае надобности) увеличивая i на единицу. Так как α ≤ j/n, то число таких проверок не
превзойдет rj+1 − rj + 1.
Иначе говоря, введя обозначение ν = ⌈mα⌉, мы будем использовать представление

τ = min{i : α ≤ si }
i≥rν

вместо более традиционного τ = mini≥1 {i : α ≤ si }.


Реализуем полученные соображения в виде алгоритма. Нахождение массива чисел rj (как и
вычисление накопленных вероятностей si ), конечно, должны быть отнесены в подготовительные
операции.

Алгоритм ChA (Cheng-Asau)


Моделирование конечного дискретного распределения последовательным методом Чжень

Предварительные операции: формирование массива накопленных вероятностей (s1 , . . . , sn ) и


вспомогательного массива (r1 , . . . , rm )

Входные данные: n, m, массив (p1 , . . . , pn ).


Результат: массивы (s1 , . . . , sn ) и (r1 , . . . , rm ).

17
1. (Инициализация) i ← 1; s1 ← p1 ;
( )
2. (Подсчет si ) For k = 1 to m do sk ← sk−1 + pk ;
3. (Поиск окна и заполнение массива) For j = 1 to m do
• (Первое si , большее (j − 1)/m) While msi ≤ j − 1 do i ← i + 1;
• (Заполнение массива) rj ← i;
3. (Завершение) STOP.

Моделирование

Входные данные: m, массивы (x1 , . . . , xn ), (s1 , . . . , sn ) и (r1 , . . . , rm ).


Результат: ξ.
1. (Инициализация) Get(α); j ← ⌈m ∗ α⌉; i ← rj ;
2. (Поиск интервала) While α > si do i ← i + 1;
3. (Завершение) ξ ← xi ; STOP.
Моделирующая часть не требует комментариев. В предварительной части первые два пункта
посвящены вычислению накопленных вероятностей, а остальные — заполнению массива rj .
Обратимся теперь к характеристикам моделирующей части алгоритма. Требуемая память,
очевидно, равна 2n + m + O(1). Что касается трудоемкости метода (здесь, как и в методе TIS,
она определяется средним числом T проверок неравенства α > si ), то ее можно оценить сверху
следующим образом.
Вероятность выбрать локализующее окно ((j − 1)/m, j/m] равна 1/m. Накопленные вероят-
ности si делят это окно на rj+1 − rj + 1 частей, что является оценкой сверху для числа проверок
неравенств α ≤ si последовательным перебором i начиная с i0 = rj . Поэтому

1 ∑ 1 ∑
m m
T ≤ (rj+1 − rj + 1) = 1 + (rj+1 − rj ) = 1 + (rm+1 − r1 )/m = 1 + (n − 1)/m. (2.2.12)
m m
j=1 j=1

Таким образом, метод Чжень, по-прежнему являющийся одним из вариантов метода обрат-
ных функций, демонстрирует удивительные свойства: путем увеличения требуемой памяти (это
регулируется параметром m алгоритма) он позволяет величине T стать сколь угодно близкой к
единице!
Например, если мы выберем m = n, то память увеличится примерно в 1.5 раза, в то время
как T будет ограничена числом 2 равномерно не только по всем распределениям с одинаковой
мощностью носителя (это мы наблюдали и в методе дихотомии), но и по n.
Кратко отметим возможные модификации метода Чжень.
1. Если в предварительную часть алгоритма включить дополнительно упорядочивание по убыванию
вероятностей, соответствующих каждому локализующему окну ((j−1)/m, j/m], то (см. комментарии
к методу TISM) вместо (2.2.12) мы получим неравенство

1 ∑
m
T ≤ (rj+1 − rj + 2) = 1 + (n − 1)/2m. (2.2.13)
2m j=1

Тем самым неравенства T < 2 можно гарантировать уже при m < n/2, то есть при меньших затратах
памяти, чем в основном алгоритме ChA.
2. Посмотрим теперь, к чему приводит упорядочивание вероятностей pi глобально (а не в каждом
локализующем окне отдельно).
Тогда вероятности, соответствующие каждому локализующему окну, тоже будут упорядочены по
убыванию, кроме, может быть, самой первой по порядку вероятности.
Пусть теперь q1 , . . . , qk — положительные вероятности, в сумме составляющие 1, причем q2 ≥ q3 ≥
. . . ≥ qk . Обозначим ti = qi /(1 − q1 ). Тогда
q1 + 2q2 + . . . + kqk = 1 + q2 + 2q3 + . . . + (k − 1)qk =
( ) (2.2.14)
= 1 + (1 − q1 ) t2 + 2t3 + . . . + (k − 1)tk ≤ 1 + (1 − q1 )k/2 < 1 + k/2.

18
Отсюда

1 ∑
m
T ≤ (rj+1 − rj + 3) = 1.5 + (n − 1)/2m. (2.2.15)
2m j=1

Если нас интересует, например, ограничение T < 3, то неравенство (2.2.15) гарантирует его при
m > n/3, в то время как неравенство (2.2.12) — лишь при m > n/2.
При очень больших m предварительное упорядочивание вероятностей pi эффекта не дает. Напри-
мер, если m > 1/ min(p1 , . . . , pn ), то, очевидно, rj+1 − rj + 1 ∈ {1, 2}, и упорядочивание теряет
смысл.33
3. Перейдем теперь к тому варианту алгоритма ChA, когда поиск внутри каждого локализующе-
го окна производится методом дихотомии. Согласно (2.2.11), поиск внутри окна ((j − 1)/m, j/m]
заканчивается не более чем за 1 + log2 (rj+1 − rj + 1) шагов. Поэтому

1 ∑( ) 1 ∑( )
m m
T ≤ 1 + log2 (rj+1 − rj + 1) = 1 + log2 (rj+1 − rj + 1) =
m j=1 m j=1
 
1 ∏m
=1+ log2  (rj+1 − rj + 1) .
m j=1

∏m
Так как максимум произведения j=1 xj на множестве xj > 0, x1 + . . . + xm = k достигается при
xj = k/m и равен (k/m)m , то
( )m
1 m+n
T ≤1+ log2 = 1 + log2 (1 + n/m).
m m

2.3 О методе Уолкера


Возьмем m ≥ 1/ min(p1 , . . . , pn ) в методе ChA. Тогда, очевидно, каждое окно Ωj будет разби-
ваться накопленными вероятностями si не более чем на 2 интервала. Следовательно, дискретное
конечное распределение (2.1.1), обладающее носителем X мощности n, может быть представлено
в виде равновероятной смеси m распределений P (i) , сосредоточенных не более чем в 2-х точках,
если только число m = m(P) достаточно большое.
Идея метода Уолкера34 [13] состоит том, что это утверждение остается верным и при m = n,
если только распределения P (i) выбраны соответствующим образом. Конечно, такой факт оче-
виден при pi = 1/n. Он также ясен при n = 2: если p1 > p2 , то распределение P (1) сосредоточено
в точке x1 , а распределение P (2) имеет вид
( )
x1 x2
P :
(2)
1 − 2p2 2p2

Докажем соответствующее утверждение в общем виде. Рассмотрим распределение P, определен-


ное в (2.1.1).

Предложение 1. Распределение P может быть представлено в виде


n
P= n−1 P (i) , (2.3.1)
i=1
33
Формально это отражено в неравенствах (2.2.14) и (2.2.15): если k = 1, то неравенство (2.2.14) становится очень
неточным, слагаемое 1.5 в правой части (2.2.15) отражает именно этот эффект. А именно, если n фиксировано, а
m → ∞, то правая часть (2.2.15) стремится к 1.5, а не к 1. Поскольку неравенство (2.2.12) не зависит от поряд-
ка pi в таблице распределения P, то оценка трудоемкости алгоритма ChA при предварительном упорядочении
вероятностей pi по убыванию приобретает вид
( )
T < min 1 + (n − 1)/m, 1.5 + (n − 1)/2m .

34
В англоязычной литературе — alias method.

19
где распределения P (i) определяются таблицами
( )
ai bi
P :
(i)
πi 1 − πi

с ai , bi ∈ X = {x1 , . . . , xn } и πi ∈ [0, 1].


Доказательство. Доказательство проводится по индукции. При n = 1, 2 утверждение верно.
Проведем индукционный переход n − 1 7→ n. Не уменьшая общности, будем считать, что вероят-
ности p1 , . . . , pn упорядочены по убыванию. Тогда p1 ≥ 1/n и pn ≤ 1/n. Если p1 = pn = 1/n, то
распределение P — равномерное на множестве X, и все доказано. Иначе p1 > 1/n и pn < 1/n.
Тем самым мы можем представить P в виде
( ) ( )
1 xn x1 n − 1 x1 x2 . . . xn−1
P = Pn = + =
n npn 1 − npn n p∗1 p∗2 . . . p∗n−1
( ) (2.3.2)
1 xn x1 n−1
= + Pn−1 ,
n npn 1 − npn n
( ) ∑n−1 ∗
где p∗1 = np1 + npn − 1 /(n − 1) и p∗i = pi n/(n − 1) при i ≥ 2, причем i=1 pi = 1 и pi > 0 при
i = 1, . . . , n − 1.
Применяя индукционное предположение, получаем требуемое.

Имея представление (2.3.1), несложно представить себе моделирующую часть алгоритма Уо-
лкера. Входными данными будут число n и 3 массива длины n: A = (a1 , . . . , an ), B = (b1 , . . . , bn ),
а также массив вероятностей Π = (π1 , . . . , πn ). При этом, вообще говоря, массивы A и B нужны
вне зависимости от того хранятся ли числа xi в массиве или вычисляются по мере надобности.
Сама моделирующая часть выглядит следующим образом. Генерируя две равномерно распре-
деленные на (0, 1] случайные величины α1 , α2 , полагаем τ = ⌈nα1 ⌉. Если α2 < πτ , то полагаем
ξ = aτ , а иначе ξ = bτ .35
Предварительная часть (если не заботиться о ее трудоемкости) может быть организована
по-разному. Например, можно следовать доказательству Предложения 1: сначала найти мак-
симальную pi и минимальную pj из вероятностей p1 , . . . , pn , а потом перейти от распределе-
ния P( = Pn к распределению
) Pn−1 , выкинув из таблицы (2.1.1) j-й столбец, пересчитав pi как
pi ← npi +npj −1 /(n−1) и преобразовав остальные вероятности pk по правилу pk ← pk n/(n−1).
Одновременно осуществляются присвоения a1 = xj , b1 = xi и π1 = npj .
Затем нужно сделать такую же операцию с распределением Pn−1 и так далее. При больших
n это, конечно, очень трудоемкий метод.
Существуют гораздо более быстрые (и более трудные для понимания) способы формирования
массивов A, B и Π, восходящие к [14] (см. также [10, Гл. III.4], [15] или [7]). Мы их, однако, касаться
здесь не будем.36

2.4 Еще о методе обратных функций


Рассмотрим распределение P, задаваемое таблицей
( )
1 ... k ... n
P: . (2.4.1)
p 1 . . . pk . . . pn
По определению, метод обратных функций для моделирования этого распределения сводится к
вычислению случайной величины τ = min{i : α ≤ si }, где si = p1 + . . . + pi . Тогда L(τ ) = P.
Ясно, что такая операция использует далеко не всю «случайность», содержащуюся в α. На-
пример, если n = 2 и p1 = p2 = 1/2, то для получения τ достаточно знать лишь старший двоич-
ный бит случайной величины α, остальные биты в моделировании не используются. Следующее
утверждение дает теоретическую возможность исправить этот недостаток.
35
Поскольку ⌈nα1 ⌉ и {nα1 } независимы, а {nα1 } ∈ U(0, 1), то вместо α2 можно использовать случайную величину
nα1 − τ + 1.
36
Не только потому, что это заняло бы много места. Просто мы условились пренебрегать трудоемкостью пред-
варительной части алгоритма.

20
Предложение 2. Пусть α ∈ U(0, 1). Рассмотрим положительные вероятности p1 , . . . , pi , . . .,
в сумме дающие единицу, и положим si = p1 + . . . + pi с s0 = 0. Пусть τ = min{i : α ≤ si }. Тогда
1. случайная величина β = (α − sτ −1 )/pτ равномерно распределена на (0, 1];
2. случайные величины β и τ независимы.

Доказательство. Прежде всего, P(τ = i) = pi при i ≥ 1. Далее, при x ∈ (0, 1]


( )
P(β < x, τ = i) = P (α − si−1 )/pi < x, si−1 < α ≤ si =
= P(α < si−1 + pi x, si−1 < α ≤ si ) = P(si−1 < α < si−1 + pi x) = pi x,

откуда немедленно следует требуемое.

Замечание 2. 1. Если pi = 1/n при всех i = 1, . . . , n, то (α − sτ −1 )/pτ = {nα} и мы приходим


к уже использовавшемуся результату о том, что случайные величины ⌈nα⌉ и {nα} независимы,
причем {nα} ∈ U(0, 1).
2. Результат Предложения 2 говорит о том, что во всех случаях, когда некоторое дискретное
распределение моделируется методом обратных функций, мы можем сэкономить одно обращение
к генератору, заменив его вычислением случайной величины β.37
3. Можно заметить, что при доказательстве Предложения 2 нигде не используется конечность
числа вероятностей pi . Тем самым доказанный результат выходит за рамки табличных методов
обратных функций.

37
Если среди вероятностей pi встречаются очень маленькие числа, то на практике к такому приему нужно
подходить с осторожностью.

21
3 Моделирование дискретных распределений, зависящих от па-
раметров
В этом разделе мы рассматриваем только наиболее употребительные методы моделирования наи-
более употребительных дискретных распределений.

3.1 Моделирование биномиального распределения


Биномиальное распределение Bin(n, p) с параметрами n ∈ N и p ∈ (0, 1) можно задать с помощью
таблицы распределения
( )
0 1 ... k ... n
P: ,
p0 p1 . . . pk . . . pn

где pk = Ckn pk (1 − p)n−k .


Один из методов моделирования распределения Bin(n, p) уже рассматривался в разделе 1
(см. Алгоритм BB на стр. 6). Этот метод был основан на том, что распределение Bin(n, p) — это
распределение числа успехов в n испытаниях Бернулли с вероятностью успеха p.
Другой популярный метод является просто последовательным методом обратных функций, но
в нетабличном варианте. А именно, накопленные вероятности sk здесь вычисляются не заранее,
а в том же цикле, где проверяются неравенства α ≤ sk . Точнее, вероятности pk рекуррентно пе-
ресчитываются одна через другую, а накопленные вероятности sk последовательно вычисляются
через sk−1 и pk .
Поскольку для биномиального распределения p0 = (1 − p)n и

pk n−k+1 p
=
pk−1 k 1−p

при k = 1, . . . , n, то мы приходим к следующему алгоритму.

Алгоритм BIS (Binomial Inverse Sequential)


Моделирование распределения Bin(n, p) последовательным методом обратных функций

Входные данные: n, p.
Результат: ξ.
1. (Инициализация) c ← p/(1 − p); s ← r ← (1 − p) ∧ n; k ← 0; Get(α);
2. (Пересчет вероятностей и поиск окна) While α > s do
• k ← k + 1; r ← r ∗ c ∗ (n − k + 1)/k; s ← s + r;
3. (Завершение) ξ ← k; STOP.
Дадим краткие комментарии к алгоритму. Переменная s обозначает текущую накопленную
вероятность sk , а переменная r — текущую вероятность pk . Поскольку первая накопленная ве-
роятность равна p0 , то инициализация переменных s и r одинакова. Переменная c заведена для
того, чтобы не делить p на 1 − p в цикле.
Трудоемкость метода вычисляется точно также как и в табличном методе обратных функ-
ций.38 А именно,


n
C≍ (k + 1)pk = Eξ + 1 = np + 1 ∼ np
k=0

при больших np. Таким образом, трудоемкость алгоритма BIS зависит от n и p, причем при
фиксированном n наихудшим случаем является p ≈ 1. Имеется простой способ улучшить этот
наихудший случай.
38
С учетом того, что нумерация вероятностей начинается с нуля.

22
Заметим, что если ξ ∈ Bin(n, p), то η = n − ξ ∈ Bin(n, 1 − p). Поэтому, если p > 0.5, то
можно применить алгоритм BIS к моделированию числа неудач в n испытаниях Бернулли с
вероятностью успеха p, а потом перейти к числу успехов. Конечно, это равносильно применению
последовательного метода обратных функций «справа налево», а не «слева направо». Запишем
соответствующий алгоритм.

Алгоритм BISM (Binomial Inverse Sequential Modified)


Моделирование Bin(n, p) модифицированным последовательным методом обратных функций

Входные данные: n, p.
Результат: ξ.
1. (Инициализация)
• If p ≤ 0.5 then t ← p else t ← 1 − p;
• c ← t/(1 − t); s ← r ← (1 − t) ∧ n; k ← 0; Get(α);
2. (Пересчет вероятностей и поиск окна) While α > s do
• k ← k + 1; r ← r ∗ c ∗ (n − k + 1)/k; s ← s + r;
3. (Завершение) If p ≤ 0.5 then ξ ← k else ξ ← n − k; STOP.
Комментария требует лишь введение переменной t, которая необходима при завершении ал-
горитма, чтобы (если нужно) перейти от моделирования числа неудач в испытаниях Бернулли к
моделированию числа успехов. Трудоемкость алгоритма BISM имеет вид C ≍ n(min(p, 1 − p)).
Таким образом, алгоритмы BIS и BISM становятся весьма трудоемкими при больших n.39
Большие n привносят и еще одну неприятность в эти алгоритмы: операция возведения в
большую степень (1−t)n при реализации на компьютере может привести к исчезновению порядка.
С этим, однако, бороться легко. Поскольку сумма независимых случайных величин ξ1 ∈ Bin(n1 ; p)
и ξ2 ∈ Bin(n2 ; p) имеет распределение ξ2 ∈ Bin(n1 + n2 ; p), то достаточно разложить большое n
на сумму относительно небольших слагаемых ni , промоделировать распределения Bin(ni ; p) и
сложить результаты. Общий вид трудоемкости при этом останется тем же.

3.2 Моделирование распределения Пуассона


Распределение Пуассона Π(λ) с параметром λ > 0 описывается с помощью бесконечной таблицы
распределения
( )
0 1 ... k ...
P: ,
p0 p1 . . . pk . . .

где pk = λk e−λ /k! . Поскольку pk /pk−1 = λ/k, а p0 = e−λ , то для распределения Π(λ) легко
реализуется последовательный нетабличный метод обратных функций.
Алгоритм PIS (Poisson Inverse Sequential)
Моделирование распределения Π(λ) последовательным методом обратных функций

Входные данные: λ.
Результат: ξ.
1. (Инициализация) s ← r ← exp(−λ); k ← 0; Get(α);
2. (Пересчет вероятностей и поиск окна) While α > s do
• k ← k + 1; r ← r ∗ λ/k; s ← s + r;
3. (Завершение) ξ ← k; STOP.
39
Как и алгоритм BB. Некоторые методы моделирования биномиального распределения, трудоемкости которых
остаются ограниченными с ростом n, можно найти в [10, гл. X.4]

23
Трудоемкость снова легко считается:


C≍ (k + 1)pk = Eξ + 1 = λ + 1.
k=0

Другой популярный (и на самом деле имеющий гораздо более глубокий смысл) алгоритм модели-
рования распределения Π(λ) требует предварительного доказательства нескольких утверждений.
Лемма 2. Пусть η1 , . . . , ηn — независимые случайные величины, имеющие показательное рас-
пределение с параметром µ. Обозначим Sn = η1 + . . . + ηn . Тогда случайная величина Sn имеет
функцию распределения Gn,µ и плотность распределения gn,µ , задаваемые при x > 0 формулами

n−1
(µx)j −µx µn xn−1 −µx
Gn,µ (x) = 1 − e , gn,µ (x) = e . (3.2.1)
j! (n − 1)!
j=0

При x ≤ 0 обе функции равны нулю.40


Доказательство. Прежде всего заметим, что непрерывная функция Gn,µ является функцией распреде-
ления: она монотонно возрастает, равна нулю на отрицательной полуоси и стремится к 1 при x → ∞.
Непосредственным дифференцированием убеждаемся, что G′n,µ (x) = gn,µ (x) при x > 0. Действитель-
но, при x > 0

n−1
µj xj−1 −µx ∑ µj+1 xj −µx
n−1
µn xn−1 −µx
G′n,µ (x) = − e + e = e .
j=1
(j − 1)! j=0
j! (n − 1)!

Тем самым осталось доказать, что Sn имеет плотность распределения gn,µ . Это легко проверяется по
индукции. При n = 1, очевидно, g1,µ (x) = µe−µx , x > 0. Так что база индукции доказана.
Для индукционного перехода n − 1 → n представим Sn в виде Sn−1 + ηn и применим формулу свертки
для плотностей распределений. Получим, что при x > 0
∫∞ ∫x
µn−1 (x − y)n−2 −µ(x−y) −µy
gn,µ (x) = gn−1,µ (x − y)g1,µ (y)dy = e µe dy =
(n − 2)!
−∞ 0
∫x
µn µn xn−1
= e−µx (x − y)n−2 dy = e−µx .
(n − 2)! (n − 2)! n−1
0

Утверждение доказано.

Предложение 3. Пусть t > 0. Рассмотрим независимые случайные величины {ηj }j≥1 , имею-
щие показательное распределение с параметром µ. Как и в Лемме 2, положим Sn = η1 +. . .+ηn .
Наконец, обозначим τ = max{n ≥ 0 : Sn < t}, полагая S0 = 0. Тогда L(τ ) = Π(µt).
Доказательство. Найдем вероятность того, что τ = n. При n = 0
P(τ = 0) = P(η1 ≥ t) = eµt .
Рассмотрим n > 0. Поскольку ηi ≥ 0, то, согласно Лемме 2,
P(τ = n) = P(Sn < t, Sn+1 ≥ t) = P(Sn < t) − P(Sn < t, Sn+1 < t) =
(µt)n −µt
= P(Sn < t) − P(Sn+1 < t) = Gn,µ (t) − Gn+1,µ (t) = e ,
n!
что и требовалось доказать.

Следствие 1. Пусть α1 , . . . , αn , . . . — последовательность независимых равномерно распреде-


ленных на (0, 1] случайных величин. Положим при λ > 0
{ ∏
n
}
τ = max n ≥ 0 : αi > e−λ . (3.2.2)
i=1

Тогда τ ∈ Π(λ).
40
На самом деле каждое из равенств (3.2.1) задает гамма-распределение Gamma(n, µ), см. Предложение 16
раздела 7.2.3 Приложения 1.

24
Доказательство. Так как41 ln(1/α) ∈ EXP(1) при α ∈ U(0, 1) и

{ ∑
n
} { ∑
n
}
τ = max n ≥ 0 : ln αi > −λ = max n ≥ 0 : − ln αi < λ ,
i=1 i=1

то ссылка на Предложение 3 завершает доказательство.

Пользуясь Следствием 1, легко записать соответствующий алгоритм.

Алгоритм PEXP (Poisson Exponential)


Моделирование распределения Π(λ) через случайные величины с показательным распределением

Входные данные: λ > 0.


Результат: ξ.
1. (Инициализация) i ← 0; p ← exp(−λ); Get(α); q ← α;
2. (Пересчет вероятностей и поиск окна) While q ≥ p do
• Get(α); q ← q ∗ α; i ← i + 1
3. (Завершение) ξ ← i; STOP.
Легко видеть, что при осуществлении этого алгоритма ровно ξ + 1 раз происходит обращение
к генератору случайных чисел. Поэтому трудоемкость алгоритма имеет вид C ≍ λ, то есть он
(как и алгоритм PIS) малопригоден при больших λ.42
Кроме того, в инициализации обоих алгоритмов присутствует оператор p ← exp(−λ), который
при больших λ может приводить к исчезновение порядка. Так как сумма независимых случайных
величин ξ1 ∈ Π(λ1 ) и ξ2 ∈ Π(λ2 ) имеет распределение Π(λ1 + λ2 ), то, разбив λ на несколько не
очень больших слагаемых λi , использовав один из алгоритмов
∑ PIS или PEXP для каждого из
λi сложив полученные результаты ξi , мы получим ξ = i ξi ∈ Π(λ).
Как уже не раз говорилось, все методы моделирования случайных величин предназначены для работы
в циклах. До рассмотрения Алгоритма PEXP не возникало сомнения, что результаты работы каждого из
таких циклов будут независимы — просто потому, что рассмотренные методы моделирования содержали
детерминированное число обращений к генератору псевдослучайных чисел. Например, метод обратных
функций использует ровно одно обращение к генератору, а алгоритм BB — n обращений.
С алгоритмом PEXP ситуация другая. Представим себе, что мы 2 раза подряд обращаемся к работе
этого алгоритма и получаем случайные величины ξ1 и ξ2 . При первом обращении нам для этого понадоби-
лись случайные величины α1 , . . . , αξ1 +1 , а при втором — αξ1 +2 , . . . , αξ1 +ξ2 +2 . То есть случайная величина
ξ1 присутствует в записи не только первой группы используемых равномерно распределенных случайных
величин (это естественно), но и второй тоже. Почему же тогда ξ1 и ξ2 независимы?43
Имея в виду не только Алгоритм PEXP, но и другие похожие случаи, мы докажем общее утвержде-
ние, устраняющее эти сомнения.
Пусть β1 , . . . , βn , . . . — независимые одинаково распределенные случайные величины, принимающие
значения в измеримом пространстве (H, H). Рассмотрим Hk -измеримые подмножества Dk множеств H k
и положим τ0 = 0, а при n ≥ 1
{ { }
min ℓ ≥ 1 : (βτn−1 +1 , . . . , βτn−1 +ℓ ) ∈ Dℓ при τn−1 < ∞,
τn = τn−1 +
+∞ при τn−1 = ∞.

Предложение 4. Если P(τ1 < ∞) = 1, то для любого n > 1


1. случайные величины τ1 , τ2 − τ1 , . . . , τn − τn−1 независимы и одинаково распределены;
2. случайные величины βτ1 , βτ2 , . . . , βτn независимы и одинаково распределены.
Доказательство. Для простоты записи будем доказывать эти факты для n = 2. Переход на общий случай
не представляет труда. Обозначим при i ≤ j события
(j−1 )
∪{ } { }
Ai,j = (βi , . . . , βℓ ) ∈
/ Dℓ−i+1 ∪ (βi , . . . , βj ) ∈ Dj−i+1 ,
ℓ=i

41
т.к. P(− ln α > x) = P(α < e−x ) = e−x при x > 0, см. также раздел 4.1.1.
42
Алгоритмы, адаптированные к большим λ, можно найти в [10, гл. X.3].
43
Более того, возникает сомнение в том, что случайная величина ξ2 имеет то же распределение, что и ξ1 .

25
которые измеримы относительно σ-алгебр σ(βi , . . . , βj ). Заметим, что события Ai1 ,j1 и Ai2 ,j2 независимы
при i2 > j1 , причем P(Ai,j ) = P(Ai+h,j+h ) для любого h > 0.
Введем ограниченные H-измеримые функции f1 , f2 : H 7→ R. Тогда при k < m
( ) ( )
E f1 (βτ1 )f2 (βτ2 ), τ1 = k, τ2 = m = E f1 (βk )f2 (βm ), τ1 = k, τ2 = m =
( ) ( ) ( )
= E f1 (βk )f2 (βm ), A1,k , Ak+1,m = E f1 (βk ), A1,k E f2 (βm ), Ak+1,m =
( ) ( ) ( ) ( )
= E f1 (βk ), A1,k E f2 (βm−k ), A1,m−k = E f1 (βk ), τ1 = k E f2 (βm−k ), τ1 = m − k .

Положив в последнем равенстве f1 = f2 ≡ 1 и ℓ = m − k, получим, что

P(τ1 = k, τ2 − τ1 = ℓ) = P(τ1 = k) P(τ1 = ℓ).

Далее,
( ) ∑ ( )
E f1 (βτ1 )f2 (βτ2 ) = E f1 (βτ1 )f2 (βτ2 ), τ1 = k, τ2 = m =
m>k≥1
∑ ∑ ( ) ( )
= E f1 (βk ), τ1 = k E f2 (βm−k ), τ1 = m − k =
k≥1 m−k≥1
∑ ( )∑ ( )
= E f1 (βk ), τ1 = k E f2 (βℓ ), τ1 = ℓ = Ef1 (βτ1 ) Ef2 (βτ1 ).
k≥1 ℓ≥1

Утверждение доказано.

Для того, чтобы применить Предложение 4 к алгоритму PEXP, нужно положить H = (0, 1], Dk =
{ ∏k }
(x1 , . . . , xk ) ⊂ H k : i=1 xi ≤ e−λ и βi = αi . Тогда случайная величина τ , определенная в (3.2.2), будет
связана с τ1 равенством τ1 = τ + 1. Первое утверждение Предложения 4 показывает, что Алгоритм PEXP
может быть использован в цикле.

3.3 Моделирование геометрического распределения


Геометрическое распределение Geom(p) с параметром p ∈ (0, 1) описывается с помощью беско-
нечной таблицы распределения
( )
0 1 ... k ...
P: ,
p0 p1 . . . pk . . .

где pk = p(1 − p)k .


Два способа моделирования геометрического распределения достаточно ясны и не требуют
особого обоснования. Первый из них — моделирование испытаний Бернулли с вероятностью успе-
ха p до первого успеха с подсчетом числа неудач,44 а второй — нетабличный последовательный
метод обратных функций, основанный на пересчете pn = (1 − p)pn−1 с p0 = p.
Запишем соответствующие алгоритмы.

Алгоритм GeomB (Geometric Bernoully)


Моделирование геометрического распределения Geom(p) через испытания Бернулли

Входные данные: p.
Результат: ξ.
1. (Инициализация) i ← k ← 0;
( )
2. (Моделирование числа неудач) While i = 0 do Get(α); If α < p then i ← 1 else k ← k + 1 ;

3. (Завершение) ξ ← k; STOP.
44
Первое утверждение Предложения 4 может быть использована для этого метода, если положить H = (0, 1],
Dk = [p, 1]k−1 × (0, p) и βi = αi .

26
Поскольку в алгоритме нам нужно ξ + 1 раз моделировать испытания Бернулли, то
1−p 1
C ≍ Eξ + 1 = +1= .
p p

Запишем теперь алгоритм метода обратных функций.


Алгоритм GeomIS (Geometric Inverse Sequential)
Моделирование распределения Geom(p) последовательным методом обратных функций

Входные данные: p.
Результат: ξ.
1. (Инициализация) s ← r ← p; k ← 0; q ← 1 − p; Get(α);
2. (Пересчет вероятностей и поиск окна) While α > s do
• k ← k + 1; r ← r ∗ q; s ← s + r;
3. (Завершение) ξ ← k; STOP.
Как обычно в последовательном методе обратных функций,

C≍ (i + 1)pi = Eξ + 1 = 1/p.
i≥0

Таким образом, оба метода оказываются плохими при малых p. Существует, однако, такой
способ реализации метода обратных функций, при котором трудоемкость по крайней мере фор-
мально не зависит от p.
Действительно, накопленная вероятность sn+1 = p0 + . . . + pn для геометрического распреде-
ления имеет вид

n
sn+1 = p(1 − p)i = 1 − (1 − p)n+1 .
i=0

Поэтому событие {ξ = n} приобретает вид


{ } { } { }
ξ = n = sn < α ≤ sn+1 = 1 − (1 − p)n < α ≤ 1 − (1 − p)n+1 =
{ } { }
= (1 − p)n+1 ≤ 1 − α < (1 − p)n = (n + 1) ln(1 − p) ≤ ln(1 − α) < n ln(1 − p) =
{ }
ln(1 − α)
= n< ≤n+1 ,
ln(1 − p)
и тем самым

ξ = ⌊ln(1 − α)/ ln(1 − p)⌋. (3.3.1)

Эту же формулу можно получить и по-другому. Пусть η — случайная величина, имеющая показа-
тельное распределение с параметром λ и ξ = ⌊η⌋. Тогда при n ≥ 0

P(ξ = n) = P(n ≤ η < n + 1) = e−nλ − e−(n+1)λ = (1 − e−λ )e−nλ .

Поскольку случайная величина − ln(1 − α)/λ имеет показательное распределение с параметром λ, то взяв
λ = − ln(1 − p), приходим к формуле (3.3.1).
При моделировании естественно заменить 1−α в формуле (3.3.1) на α. В результате приходим
к следующему алгоритму.

Алгоритм GeomDIM (Geometric Direct Inverse Modified)


Моделирование распределения Geom(p) модифицированным прямым методом обратных функций

Входные данные: p.
Результат: ξ.
1. (Моделирование) Get(α); ξ ← ⌊ln(α)/ ln(1 − p)⌋; STOP.

27
Таким образом, для моделирования геометрического распределения методом GeomDIM тре-
буется одно обращение к генератору псевдослучайных чисел, два вычисления логарифма и одно
— целой части числа. Если считать, что время вычисления значений функций ⌊x⌋ и ln(z) огра-
ничено при всех x и z ∈ (0, 1) одной и той же постоянной, то трудоемкость алгоритма имеет вид
O(1) равномерно по p.
По сравнению с предыдущими алгоритмами это выглядит немного странно, так как интуитивно ясно,
что геометрическое распределение с маленьким параметром p должно быть, в принципе, сложным для
моделирования.45 Разберемся, в чем здесь дело.
На примере геометрического распределения имеет смысл поговорить о недостатках того классического
подхода к понятию трудоемкости, которого мы придерживаемся (и будем придерживаться в дальнейшем).
Коротко говоря, дело в том, что за источник случайности у нас принято считать независимые рав-
номерно распределенные на (0, 1] случайные величины, которые по определению имеют счетное число
двоичных разрядов. В то же время большинство генераторов псевдослучайных чисел вырабатывают по-
следовательность чисел вида ai = ki /M , где M — большое целое число,46 а ki ∈ X = {0, . . . , M − 1}.
Это означает, что более адекватным источником случайности является последовательность {εi }i≥1
независимых случайных величин, равномерно распределенных на множестве X. При M = 2 элементы
теории моделирования (в основном, дискретных) случайных величин с таким источником случайности
были разработаны в статье Кнута и Яо [11], некоторые результаты для произвольного M можно найти в
разделе 6.
В этом разделе, в частности, доказано следующее утверждение. Пусть мы используем последователь-
ность {εi }i≥1 для моделирования дискретного распределения P. Определим трудоемкость соответствую-
щего алгоритма как среднее число использованных случайных величин εi ,47 , необходимое для получения
одной случайной величины, имеющей распределение P.
Тогда, во-первых, существует оптимальный (то есть имеющий минимальную трудоемкость CM (P))
алгоритм, и во-вторых, эта минимальная трудоемкость удовлетворяет неравенству

H2 (P) H2 (P) M
≤ CM (P) < + , (3.3.2)
log2 M log2 M M −1

где двоичная энтропия H2 (P) распределения P с вероятностями p1 , . . . , pn , . . . определяется формулой



H2 (P) = − pi log2 pi .
i

Для геометрического распределения с параметром p, стремящемся к нулю, получаем, что



∑ ( )
H2 (P) = − p(1 − p)i log2 p + i log2 (1 − p) =
i=0
1−p
= log2 (1/p) − log2 (1 − p) ∼ log2 (1/p) → ∞.
p
Следовательно, если мы хотим промоделировать геометрическое распределение методом обратных
функций48 , то при фиксированном M и при достаточно малом p мы будем иметь ощутимые потери в
точности моделирования. При моделировании распределения с большой энтропией следует использовать
методы, в которых задействовано несколько обращений к генератору псевдослучайных чисел.49 Как уже
говорилось, более подробно об этих проблемах написано в разделе 6.

45
Чем меньше p, тем геометрическое распределение больше «размазано» по счетному множеству {0, 1, . . .}.
46
Как правило, M = 2d , так что числа ai имеют конечное число двоичных разрядов, в то время как αi —
бесконечное число. Наиболее часто используется d = 32.
47
То есть среднее число обращений к (идеальному) генератору псевдослучайных чисел.
48
Или любым другим методом, использующим одно обращение к генератору.
49
Это относится и к дискретному равномерному распределению, двоичная энтропия которого равна log2 n.

28
4 Общие методы моделирования
Не существует общепринятого списка методов моделирования, которые могли быть названы «об-
щими» или «универсальными». Тем не менее, мы выделим 3 метода, идеи которых в той или иной
степени (и в той или иной комбинации) используются в большинстве практических алгоритмов.

4.1 Метод обратных функций


Пусть P — распределение, заданное на борелевских подмножествах R. Обозначим F функцию
распределения распределения P, то есть положим F (x) = P((−∞, x)). Метод обратных функций
для моделирования распределения P основан на следующем утверждении.

Лемма 3. Определим функцию G : (0, 1) 7→ R равенством

G(y) = inf{x ∈ R : F (x) > y}. (4.1.1)

Тогда 1. при y ∈ (0, 1) и t ∈ R неравенства G(y) < t и y < F (t) эквивалентны;


2. функция G является монотонно неубывающей и непрерывной справа.

Доказательство. 1. Пусть G(y) < t, то есть inf{x ∈ R : F (x) > y} < t. Так как функция F не
убывает, то отсюда следует, что F (t) > y.
С другой стороны, обозначим z = G(y) и предположим, что y < F (t). Тогда F (z) ≤ y.
Действительно, пусть F (z) > y. Поскольку функция F непрерывна слева, то из этого неравенства
следует, что F (z ∗ ) > y при некотором z ∗ < z, что противоречит (4.1.1). Сравнивая неравенства
F (z) ≤ y и F (t) > y, получаем требуемое.
2. Монотонность функции G следует из включения {x : F (x) > y1 } ⊃ {x : F (x) > y2 }, верного
при y1 < y2 . Пусть функция G не является непрерывной справа в точке y ∈ (0, 1). Это значит, что
существует такая последовательность yn ↓ y и такое число t, что G(yn ) > t > G(y) при n > n0 .
Согласно первому утверждению леммы эти неравенства эквивалентны неравенствам F (t) > y
и F (t) ≤ yn . Поскольку yn ↓ y, получаем противоречие.

Следствие 2. В условиях Леммы 3 случайная величина G(α) имеет распределение P.

Доказательство. Это следует из цепочки равенств P(G(α) < x) = P(α < F (x)) = F (x).

Метод моделирования одномерного распределения P с функцией распределения F при помо-


щи моделирующей функции (4.1.1) называется методом обратных функций.
Опишем три характерные ситуации поведения функции G.50 Пусть x ∈ R и y ∈ (0, 1) связаны
соотношением F (x) = y.

1. Если в окрестности точки x функция распределения F обратима, то G(y) = x.

2. Пусть (x1 , x2 ] — максимальный (и не пустой) интервал постоянства функции F , содержащий


точку x. Тогда G(y) = x2 .
def
3. Если y1 = F (x + 0) > y, то G(z) = x при любом z ∈ [y, y1 ).

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

1. Обозначим x∗ = inf{x : F (x) > 0} и x∗ = sup{x : F (x) < 1} и предположим, что F (x∗ ) = 0
и F (x∗ ) = 1 (если x∗ = −∞ или x∗ = +∞, то соответствующие равенства считаются
автоматически выполненными). Предположим, что сужение F∗ функции F на промежуток
(x∗ , x∗ ) обратимо. Тогда при y ∈ (0, 1)
{ }
G(y) = inf{x : F (x) > y} = inf{x : F∗ (x) > y} = inf x : x > F∗−1 (y) = F∗−1 (y). (4.1.2)

Равенство (4.1.2), конечно, и дало название методу.


50
Убедитесь, что эти описания верны.

29
2. Рассмотрим дискретное распределение, задаваемое таблицей (2.1.1), и предположим, что
xi < xj при i < j. Обозначим si = p1 + . . . + pi . Тогда функция распределения, задаваемая
распределением P, принимает значения F (x) = 0 при x ≤ x1 , F (x) = si при xi < x ≤ xi+1
(i = 1, . . . , n − 1) и F (x) = 1 при x > xn .
Поэтому
{
x1 при 0 < y < s1
G(y) = inf{x : F (x) > y} =
xi при si ≤ y < si+1 , i = 1, . . . , n − 1.

Это в точности соответствует определению (2.2.1) и объясняет термин «метод обратных


функций», использовавшийся в разделах 2.2 и 3.51

Легко доказать следующий факт, проясняющий метод обратных функций несколько с другой стороны.

Предложение 5. Пусть P — некоторое распределение с функцией распределения F . Предположим,


что H : (0, 1) 7→ R — монотонно неубывающая измеримая функция такая, что L(H(α)) = P. Тогда
H(y) = G(y) почти всюду по мере Лебега на (0, 1). Если к тому же H является непрерывной справа,
то H(y) = G(y) при всех y ∈ (0, 1).

Доказательство. Возьмем t ∈ R и рассмотрим множество At = {y : H(y) < t}. Ввиду монотонности


функции H это множество имеет вид (0, at ⟩, где угловая скобка " ⟩ " означает, что точка at может как
принадлежать, так и не принадлежать множеству At . Поскольку P(H(α) < t) = F (t), то at = F (t).
Отсюда и из Леммы 3 следует, что для любого t ∈ R
{ } ( ⟩ [ ) { }
y : H(y) < t ≤ G(y) = 0, F (t) ∩ F (t), 1 ⊂ F (t) .
( )
Таким образом, P H(α) < t ≤ G(α) = 0 для любого t ∈ R. Поскольку
( )
( ) ∪ { } ∑ ( )
P H(α) < G(α) = P H(α) < r ≤ G(α) ≤ P H(α) < r ≤ G(α) ,
r∈R0 r∈R0
( )
( R0 — множество
где ) рациональных чисел, то P H(α) < G(α) = 0. Аналогично доказывается, что
P H(α) > G(α) = 0, и поэтому функции G и H совпадают почти всюду.
Если две функции совпадают почти всюду, то отличаться они могут только в точках разрыва одной
из этих функций. Поскольку в точках разрыва функции G и H непрерывны справа, то этот вариант тоже
исключается.

Замечание 3. Конечно, вместо моделирующей формулы ξ = G(α) можно использовать формулу ξ =


G(1 − α). Возникающая при этом моделирующая функция G1 (y) = G(1 − y) является монотонно невозрас-
тающей и для нее верен аналог Предложения 5. Учитывая это соображение, моделирование распределения
P с помощью функции (4.1.1) (или с помощью функции G1 ) можно назвать монотонным моделированием.
Термин «метод обратных функций», тем не менее, является более традиционным.

4.1.1 Примеры
Перейдем к примерам. Эти примеры относятся к нескольким стандартным распределениям и со-
ответствуют преобразованию (4.1.2). При записи плотностей и функций распределения условим-
ся, что формула для плотности приводится только для тех аргументов, для которых плотность
не равна нулю, а формула для функции распределения — для тех аргументов, где эта функция
отлична от нуля и единицы.

1. Показательное распределение EXP(λ) c параметром γ > 0 имеет плотность распределения

p(x) = λe−λx , x > 0.

Здесь x∗ = 0, x∗ = +∞, F∗ (x) = 1 − e−λx при x > 0 и G(y) = − ln(1 − y)/λ при y ∈ (0, 1).
Таким образом, моделирование показательного распределения методом обратных функций
51
Отметим, что в разделе 2.2 этот термин используется безотносительно к тому, упорядочены ли числа xi по
возрастанию, или нет.

30
осуществляется как ξ ← − ln(1 − α)/λ. Поскольку L(1 − α) = U(0, 1), то на практике ис-
пользуют моделирующую формулу

ξ ← − ln(α)/λ.

2. Распределение Рэлея можно задать плотностью

p(x) = xe−x
2 /2
, x > 0. (4.1.3)

Получаем, что x∗ = 0, x∗ = +∞, F∗ (x) = 1 − e−x /2 при x > 0 и G(y) = −2 ln(1 − y). Снова
2

переходя от α к 1 − α, получаем традиционную моделирующую формулу


( )
ξ ← sqrt − 2 ∗ ln(α) . (4.1.4)

3. Степенное распределение с параметром γ > 0 имеет плотность

p(x) = γxγ−1 , x ∈ (0, 1).

В этом случае x∗ = 0, x∗ = 1, F∗ (x) = xγ , G(y) = y 1/γ и метод обратных функций приводит


к моделирующей формуле

ξ ← α ∧ (1/γ).

4. Распределение Парето с параметром γ > 0 задается плотностью

p(x) = γx−γ−1 , x > 1.

Здесь x∗ = 1, x∗ = +∞, F∗ (x) = 1 − x−γ и G(y) = (1 − y)−1/γ . Как и раньше, заменяя α на


1 − α, приходим к моделирующей формуле

ξ ← α ∧ (−1/γ).

Отсюда и из предыдущего примера можно заметить, что если ξ имеет степенное распределение с параметром
γ, то 1/ξ имеет распределение Парето с тем же параметром.

5. Распределение Коши имеет плотность распределения


1 1
p(x) = , x ∈ R.
π 1 + x2
В этом случае x∗ = −∞, x∗ = +∞,
1 1
F∗ (x) = F (x) = + arctan(x)
2 π
( )
при x ∈ R и G(y) = tan π(y − 0.5) = − cot(πy) = cot(π(1 − y)). Тем самым (заменяя α на
1 − α), получаем моделирующую формулу

ξ ← cot(π ∗ α).

Отметим, что случайная величина tan(πα) также имеет распределение Коши,52 но соответ-
ствующая моделирующая функция в этом случае не является монотонной.

Подводя некоторые итоги, можно сказать, что метод обратных функций для моделирования
распределения с обратимой функцией F∗ будет достаточно эффективным, если существует точная
и быстрая процедура вычисления обратной к этой функции.
52
Если случайная величина ξ имеет распределение Коши, то η = 1/ξ тоже имеет распределение Коши.

31
4.2 Метод отбора
Метод отбора (в другой терминологии — метод исключения или метод фон Неймана, в англо-
язычной литературе — rejection method) является весьма распространенным, универсальным и
(при грамотной реализации) эффективным методом моделирования распределений. Принятое
здесь изложение метода отбора отличается от традиционного несколько большей общностью.

4.2.1 Идея метода


Проиллюстрируем идею метода отбора на простейшем примере, восходящем к Дж. фон Нейману.
Рассмотрим плотность распределения p(x), x ∈ R, и обозначим H подграфик этой плотности:
H = {(x, y) : 0 ≤ y < p(x)}. Ясно, что двумерная мера Лебега mes2 множества H равна 1.
Введем случайный вектор ξ = (ξ1 , ξ2 ), равномерно распределенный в множестве H и найдем
распределение случайной величины ξ1 . Получим, что
∫ ∫z ∫
p(x) ∫z
P(ξ1 < z) = dxdy = dx dy = p(x)dx.
{(x,y)∈H: x<z} −∞ 0 −∞

Таким образом, случайная величина ξ1 имеет плотность распределения p.

p(x)

0 1

Рис. 2: Иллюстрация к идее метода отбора

Отсюда появляется идея моделирования распределения P с плотностью распределения p : если


мы сумеем получить реализацию случайного вектора, равномерно распределенного в подграфике
плотности p, то первая координата этого вектора будет иметь нужное нам распределение.
Предположим теперь дополнительно, что плотность p сосредоточена на отрезке [0, 1] и огра-
ничена постоянной M (см. рис 2, где M = vraisup p). В этом случае имеется «очевидная»53
процедура моделирования равномерного распределения в области H. А именно, моделируя рав-
номерное распределение в прямоугольнике [0, 1] × [0, M ], нужно проверить, лежит ли полученная
точка под графиком плотности p или нет. Если лежит, то первая координата этой точки является
результатом моделирования, если нет — процедуру нужно повторить.
Иначе говоря, получив 2 случайные величины α1 , α2 , мы проверяем неравенство p(α1 ) > M α2
и повторяем эту процедуру до тех пор, пока это неравенство не выполнится.
Идея выглядит привлекательной, но возникают вопросы, что делать, если плотность p не
является ограниченной и/или если она положительна на всей прямой (а почему обязательно на
прямой?).

4.2.2 Теория метода


Мы начнем с необходимых нам сведений об абсолютной непрерывности мер и производных
Радона-Никодима.
53
Кавычки появились из-за того, что эту процедуру все равно нужно обосновывать.

32
О производных Радона-Никодима. Пусть (D, D) — некоторое измеримое пространство и ν,
µ — меры, заданные на D. Мера ν называется абсолютно непрерывной относительно меры µ, если
для любого A ∈ D такого, что µ(A) = 0, выполняется равенство ν(A) = 0. Свойство абсолютной
непрерывности записывается как ν ≺ µ.
Имеет место следующий вариант теоремы Радона-Никодима (ее доказательство можно найти,
например, в [16, гл. II.8.1]).
Теорема 1. Если µ — σ-конечная мера, то для того, чтобы конечная мера ν была абсолютно
непрерывна относительно µ, необходимо и достаточно, чтобы существовала такая D-измери-
мая функция r, что для любого A ∈ D

ν(A) = rdµ. (4.2.1)
A

При этом функция r единственна с точностью до множества µ-меры ноль.


Кроме того, для любой функции f ∈ L1 (dν)
∫ ∫
f dν = f rdµ.
D D

Функция r называется производной Радона-Никодима меры ν относительно меры µ и обозна-


чается r = dν/dµ. Иногда этот же факт записывается как dν = rdµ.
Замечание 4. 1. Достаточность в Теореме 1 очевидна. Так же ясно, что замена в правой части
равенства (4.2.1) функции r на другую функцию, совпадающую µ-почти всюду с r, не меняет
левую часть. Суть Теоремы 1 состоит, конечно, в доказательстве необходимости.
2. На самом деле утверждение Теоремы 1 остается в силе, если ν является конечным зарядом.
Именно в таком виде эта теорема используется в теории метода Монте-Карло.
Нам понадобится одно следствие из теоремы Радона-Никодима.
Следствие 3. Пусть (D, D) — измеримое пространство. Рассмотрим распределения P, Q и
σ-конечную меру µ, определенные на D, и предположим, что dP = p dµ и dQ = q dµ. Тогда
имеют место следующие утверждения.
1. Распределение P абсолютно непрерывно относительно Q тогда и только тогда, когда
µ{x : p(x) ̸= 0, q(x) = 0} = 0. (4.2.2)
2. При этом Q-почти всюду
{
dP def p(x)/q(x) при q(x) ̸= 0,
(x) = r(x) = (4.2.3)
dQ 0 при q(x) = 0.
Доказательство. Не умаляя общности, будем считать, что функции p и q неотрицательны.
1. Предположим, что условие (4.2.2) выполнено. Тогда при любом A ∈ D
∫ ∫ ∫
P(A) = p(x)µ(dx) = p(x)µ(dx) + p(x)µ(dx) =
A A∩{x: q(x)̸=0} A∩{x: q(x)=0}
∫ ∫
p(x)
= q(x)µ(dx) + p(x)µ(dx) = I1 + I2 .
q(x)
A∩{x: q(x)̸=0} A∩{x: q(x)=0, p(x)̸=0}

Согласно (4.2.2), I2 = 0. Поэтому


∫ ∫
p(x)
P(A) = I1 = Q(dx) = r(x)Q(dx) =
q(x)
A∩{x: q(x)̸=0} A∩{x: q(x)̸=0}
∫ ∫ ∫
= r(x)Q(dx) + r(x)Q(dx) = r(x)Q(dx).
A∩{x: q(x)̸=0} A∩{x: q(x)=0} A

33
Таким образом, если условие (4.2.2) выполнено, то P ≺ Q и dP/dQ = r.
2. Пусть теперь P ≺ Q. Положим A = {x : p(x) ̸= 0, q(x) = 0}. По определению, Q(A) = 0,
поэтому P(A) = 0. То есть

0 = P(A) = p(x)µ(dx). (4.2.4)
{x :p(x)̸=0, q(x)=0}

Подинтегральная функция в правой части (4.2.4) строго положительна, следовательно, множе-


ство интегрирования имеет µ-меру ноль.

Теорема о методе отбора. Алгоритмическая схема метода. Вернемся теперь к методу


отбора. Пусть (D, D) — некоторое измеримое пространство и P, Q — распределения, заданные
на D. Будем предполагать, что распределение Q мажорирует распределение P, то есть что
существует производная r = dP/dQ Радона-Никодима меры P по мере Q, обладающая свойством
vraisupQ r ≤ M < ∞.

Предложение 6. Пусть η1 , . . . , ηn , . . . и α1 , . . . , αn , . . . — независимые в совокупности случай-


ные величины, причем L(ηi ) = Q, а αi ∈ U(0, 1). Обозначим

τ = min(n : r(ηn ) > M αn ). (4.2.5)

Тогда имеют место следующие утверждения.


1. Случайная величина τ − 1 имеет геометрическое распределение с параметром 1/M .
2. Случайная величина ητ имеет распределение P.
3. Случайные величины τ и ξτ независимы.

Доказательство. Будем доказывать все утверждения одновременно. Возьмем A ∈ D. При n ≥ 1


получим, что
( ) ( )
P ητ ∈ A, τ = n = P ηn ∈ A, r(η1 ) ≤ M α1 , . . . , r(ηn−1 ) ≤ M αn−1 , r(ηn ) > M αn =
( ( )n−1 ( )
= P r(η) ≤ M α) P η ∈ A, r(η) > M α ,

где η и α независимы, L(η) = Q и α ∈ U(0, 1). Далее, так как r(x) ≤ M при Q-п.в. x, то

∫ ∫ ∫
r(x)/M ∫
( ) 1 1
P η ∈ A, r(η) > M α = Q(dx)dt = Q(dx) dt = rdQ = P(A).
M M
x∈A, r(x)>M t A 0 A

(
Поэтому P r(η) ≤ M α) = 1 − 1/M и
( )n−1
( ) 1 1
P ητ ∈ A, τ = n = 1− P(A).
M M

Отсюда сразу видно, что τ − 1 ∈ Geom(1/M ). Кроме того,



∑ ∞ ( )
( ) ( ) ∑ 1 1 n−1
P ξ∈A = P ητ ∈ A, τ = n = 1− P(A) = P(A).
M M
n=1 n=1

Следовательно, остальные утверждения тоже доказаны.

Замечание 5. Из приведенного доказательства следует, что P(η ∈ A | r(η) > M α) = P(A) для
любого A ∈ A. Иногда именно это равенство считают обоснованием метода отбора.
Прежде чем разбирать алгоритмические аспекты метода отбора, обсудим условие vraisupQ r < ∞,
используемое в Предложении 6. А именно, обозначим M0 = vraisupQ r и покажем, что число M0 − 1 (если
оно мало) можно считать мерой близости распределений P и Q по вариации.

34
Предложение 7. 1. M0 ≥ 1, причем M0 = 1 тогда и только тогда, когда P = Q.
2. supA∈D |P(A) − Q(A)| ≤ 2(M0 − 1).

Доказательство. 1. Действительно, если M0 < 1, то 1 = P(D) = D rdQ ≤ M0 < 1, чего быть не может.
Пусть теперь M0 = 1. Обозначив A = {x : r(x) < 1}, B = {x : r(x) = 1} и C = {x : r(x) > 1}. По
условию, Q(C) = 0. Поэтому, если Q(A) > 0, то
∫ ∫ ∫ ∫
1 = P(D) = rdQ = rdQ + rdQ + rdQ < Q(A) + Q(B) = 1,
D A B C

и мы пришли к противоречию. Следовательно, Q({x : r(x) = 1}) = 1 и P = Q.


2. Так как
∫ ∫ ∫
0 = (r − 1)dQ = (r − 1)+ dQ − (r − 1)− dQ ,
D D D

то
∫ ∫ ∫ ∫ ∫
|r − 1|dQ = (r − 1)+ dQ + (r − 1)− dQ = 2 (r − 1)+ dQ = 2 (r − 1) dQ ≤ 2(M0 − 1)
D D D D r>1

и
∫ ∫ ∫

sup |P(A) − Q(A)| = sup (r − 1)dQ ≤ sup |r − 1|dQ = |r − 1|dQ ≤ 2(M0 − 1). (4.2.6)
A A A
A A D

Тем самым, если число M0 близко к 1, то распределения P и Q близки по вариации.

Запишем общую алгоритмическую схему метода отбора, вытекающую из Предложения 6.

Алгоритмическая схема метода отбора


Моделирование распределения P методом отбора с мажорирующим распределением Q

Входные данные: функция r = dP/dQ, мажоранта M .


Результат: ξ.
( )
1. (Отбор) Do η ← Q( · ); Get(α) while r(η) ≤ M α;
2. (Завершение) ξ ← η; STOP.
Что касается трудоемкости метода, то она пропорциональна среднему числу моделирований
случайного вектора (η, α), то есть величине Eτ = M .
Покажем возможность использования метода отбора в цикле, опираясь на второе утверждение Пред-
ложения 4. Возьмем H = D × (0, 1) и βi = (ηi , αi ). Кроме того, положим G = {(x, t) ∈ H : r(x) > M t} и
определим Dk = (H \G)k−1 ×G. Тогда случайная величина τ1 Предложения 4 совпадает с τ , определенной
в (4.2.5), а βτ1 = (ητ , ατ ). Следовательно, структура метода отбора описывается Предложением 4.
Посмотрим теперь на предварительный пример раздела 4.2.1 с точки зрения Предложения 6.
В примере Рисунка 2 D = [0, 1], D = B[0,1] — борелевская σ-алгебра подмножеств отрезка [0, 1], а
распределение P определено своей плотностью p, которая ограничена постоянной M .
Введем меру µ = mes1 на отрезке [0, 1] и возьмем Q = µ. Тогда dP/dµ = p, dQ/dµ = 1 и,
согласно Следствию 3, существует производная Радона-Никодима r = dP/dQ = p ≤ M .
Поэтому для моделирования распределения P мы должны на каждом шаге общей алго-
ритмической схемы отбора моделировать случайные величины α1 , α2 и проверять неравенство
p(α1 ) > M α2 . Как только это неравенство выполнится, результатом работы алгоритма окажется
ξ = α1 . Именно эта процедура словесно описана в разделе 4.2.1.
Наконец, приведем один иллюстративный пример.54 Пусть задача состоит в моделировании «хвоста»
нормального распределения с плотностью

p(x) = pa (x) = C(a)e−x


2
/2
, x ≥ a > 0, (4.2.7)
54
см. [10, гл. IX.1.2]

35
/∫∞
где C(a) = 1 a e−x /2 dx. Таким образом, у нас D = [a, +∞), а P = Pa задается плотностью (4.2.7)
2

относительно сужения меры Лебега на D. В качестве Q = Qa возьмем распределение с плотностью


2
−x2 )/2
q(x) = qa (x) = xe(a , x ≥ a > 0. (4.2.8)

Распределению Q при x ≥ a > 0 соответствует функция распределения F (x) = Fa (x) = 1 − e(a −x )/2 ,
2 2

поэтому Q может быть промоделировано методом


√ обратных функций, который (после замены α1 на 1−α1 )
приводит к моделирующей формуле η = a2 − 2 ln(α1 ).
Далее, производная Радона-Никодима r является ограниченной, так как

r(x) = p(x)/q(x) = x−1 C(a) e−a ≤ M = M (a) = a−1 C(a) e−a


2 2
/2 /2
при x > a.

Неравенство r(η) ≤ M α2 , которое нужно проверять в методе отбора, очевидным образом переписыва-
ется как α2 η ≥ a, или, учитывая квадратный корень в моделирующей формуле для η, как α22 η 2 > a2 .
Отсюда сразу же приходим к следующему алгоритму.

Алгоритм метода отбора для распределения (4.2.7)


Моделирование распределения (4.2.7) методом отбора с мажорирующим распределением (4.2.8)

Входные данные: a > 0.


Результат: ξ.
1. (Инициализация) b ← a ∗ a/2;
( )
2. (Отбор) Do Get(α1 , α2 ); β ← b − ln(α1 ); γ ← α2 ∗ α2 while β ∗ γ ≤ b;
3. (Завершение) ξ ← sqrt (2 ∗ β); STOP.
Таким образом, для получения одной реализации случайной величины ξ нужно в среднем: 2M (a)
раз обратиться к генератору псевдослучайных чисел, M (a) раз сосчитать логарифм и один раз извлечь
квадратный корень.
Что касается трудоемкости M (a) обсуждаемого метода отбора, то, как нетрудно видеть,
∫∞ ∫∞
( ) ( ) ∞ ∫∞
−x2 /2
e dx = − x−1
d e −x2 /2
=− x −1 −x2 /2
e + e−x2 /2 dx−1 =

a
a a a
∫∞ ∫∞
( )
= a−1 e−a x−2 e−x dx = a−1 e−a x−3 d e−x /2 =
2 2 2 2
/2
− /2 /2
+ (4.2.9)
a a
( ) ∞ ∫∞ ∫∞
=a −1 −a2 /2
e + x −3 −x2 /2
e − e−x2 /2 dx−3 = a−1 e−a2 /2 − a−3 e−a2 /2 + 3 x−4 e−x2 /2 dx.

a
a a

Поэтому
∫∞
e−x dx ∼ e−a
2 2
/2 /2
/a
a

при a → ∞ и M (a) → 1 при тех же условиях. Более того, при a > 1 из (4.2.9) следует, что 1 < M (a) <
a2 /(a2 − 1), так что при больших a алгоритм оказывается достаточно эффективным.

4.2.3 Обсуждение. Варианты и примеры


1. Отбор с ограничениями. Обсудим, при каких условиях имеет смысл использовать метод
отбора.
Поскольку распределение P моделируется с использованием моделирования распределения
Q, то P должно быть «сложным для моделирования», а Q — «простым для моделирования».
Число M должно быть близким к 1. Согласно (4.2.6) это означает, что распределения P и Q
должны быть близки по вариации.
Обычно реализация этих требований приводит к тому, что производная Радона-Никодима r
оказывается сложна для вычислений. Есть несколько способов борьбы с этим явлением, осно-
ванных на том, что на самом деле нам нужно не вычислять функцию r в точке η, а проверять

36
неравенство r(η) > M α. Поэтому достаточно преобразовать это неравенство в более простое
эквивалентное. Например, иногда помогает логарифмирование обеих частей неравенства.
Другой (и часто более эффективный) прием55 заключается в том, чтобы найти такие простые
в вычислительном смысле функции r1 и r2 , что 0 ≤ r1 (x) ≤ r(x) ≤ r2 (x) ≤ M при всех x ∈ D.
Тогда можно, например, сначала проверять условие r1 (η) > M α (в этом случае моделирова-
ние закончено), затем, если r1 (η) ≤ M α, проверять условие r2 (η) ≤ M α (при его выполнении
нужно моделировать новую пару (η, α)), и лишь в случае невыполнения обоих этих неравенств
переходить к проверке неравенства r(η) > M α. Если при этом окажется, что вероятность

( ) −1
P r1 (η) < M α < r2 (η) = M (r2 (x) − r1 (x))Q(dx)
D

мала, то непосредственно проверять неравенство r(η) > M α придется редко.56


Представим одну из возможных алгоритмических схем отбора с ограничениями.

Алгоритмическая схема метода отбора с ограничениями


Моделирование распределения P методом отбора с ограничениями и мажорирующим распределением Q

Входные данные: r = dP/dQ, мажоранта M , сжимающие функции r1 , r2 .


Результат: ξ.
1. (Основной цикл отбора)
• Do
◦ Do (Отбор с вычислением функций r1 и r2 )
Get(α); η ← Q( · );
If r1 (η) > M ∗ α then (ξ ← η; STOP);
◦ while r2 (η) ≤ M ∗ α;
• while r(η) ≤ M ∗ α;
2. ξ ← η; STOP.

Приведем пример, иллюстрирующий смысл отбора с ограничениями.


Рассмотрим распределение P с плотностью

p(x) = 1 + 0.01 sin(2πx), x ∈ [0, 1]. (4.2.10)

Если сравнить распределение P с распределением Q = U(0, 1), то бросается в глаза, что, с одной
стороны, P и Q близки, а с другой — распределение P гораздо более сложно для моделирования, чем Q.
Поскольку
dP
r(x) = (x) = p(x) ≤ M = 1.01,
dQ
то неравенство r(η) ≤ M α записывается как 100+sin(2πα1 ) ≤ 101α2 , и общий алгоритм отбора приобретает
следующий вид.

Алгоритм метода отбора для распределения (4.2.10)


Моделирование распределения (4.2.10) методом отбора из распределения U(0, 1)

Входные данные: ϑ = 8 arctan(1).


Результат: ξ.
1. (Отбор) Do Get(α1 , α2 ) while 100 + sin(ϑ ∗ α1 ) ≤ 101 ∗ α2 ;
2. (Завершение) ξ ← α1 ; STOP.
55
В англоязычной литературе этот прием называется «squeeze principle», см. [10, гл. III.3.6]. Поэтому функции
r1 , r2 иногда называются сжимающими.
56
Конечно, при реальном моделировании одна из функций r1 , r2 может отсутствовать. Формально этому соот-
ветствует выбор r2 ≡ M или r1 ≡ 0.

37
В этом алгоритме для получения одной реализации ξ нам нужно в среднем 2.02 раз обращаться
к генератору псевдослучайных чисел и в среднем 1.01 раз считать функцию sin. Если условиться, что
вычисление функции sin является трудоемкой операцией, то имеет смысл рассмотреть вариант отбора с
ограничениями.
Заметим, что minx p(x) = 0.99, поэтому выберем в качестве функции r1 эту постоянную. Что касается
r2 , то не будем ее для простоты вводить вовсе. Отметим, что неравенство r1 (η) > M α эквивалентно
неравенству α2 < 99/101, поэтому алгоритм приобретает следующий вид.

Алгоритм метода отбора с ограничениями для распределения (4.2.10)


Моделирование распределения (4.2.10) методом отбора с ограничениями

Входные данные: ϑ = 8 arctan(1), a = 99/101.


Результат: ξ.
1. (Основной цикл отбора)
• Do (Отбор со сжимающей функцией r1 )
Get(α1 , α2 ); If α2 < a then (ξ ← α1 ; STOP);
• while 100 + sin(ϑ ∗ α1 ) ≤ 101 ∗ α2 ;
2. ξ ← α1 ; STOP.
В этом варианте отбора функция sin считается лишь с вероятностью 0.02/1.01 ≈ 0.0198 на каждом
шаге цикла. Поэтому среднее число подсчетов синуса для получения одной реализации ξ равно 0.02, что
существенно меньше, чем в предыдущем алгоритме.

2. Метод отбора для дискретных распределений. Конечно, общая алгоритмическая схема


отбора, представленная в разделе 4.2.2, годится не только для абсолютно непрерывных распреде-
лений в евклидовых пространствах. Покажем, как она выглядит для дискретных распределений.
Пусть наша задача — промоделировать распределение P, сосредоточенное на конечном или
счетном множестве D = {x1 , . . . , xn , . . .} и определенное неотрицательными вероятностями pi =
p(xi ) = P({xi }).
Введем на подмножествах D считающую меру µ равенством µ({xi }) = 1. Тогда P ≺ µ и соот-
ветствующая производная p(xi ) Радона-Никодима равна dP({xi })/dµ({xi }) = pi . Действительно,
для любого A ⊂ D
∑ ∑ ∫
P(A) = pi = p(xi )µ({xi }) = p dµ.
i: xi ∈A i: xi ∈A A

Аналогичным образом любое другое распределение Q, сосредоточенное на D, абсолютно


непрерывно относительно считающей меры µ с производной Радона-Никодима q(xi ) = qi , где
qi = Q({xi }). Поэтому, согласно Следствию 3, условие существования производной Радона-
Никодима переписывается в виде57 «если pi ̸= 0, то qi ̸= 0», а сама производная равна
p
 i при qi ̸= 0;
ri = r(xi ) = qi
0 при qi = 0.

Поэтому, если отношение pi /qi ограничено сверху постоянной M , то общий алгоритм метода
отбора сохраняет свой вид с заменой неравенств r(η) ≤ M α на pη /qη ≤ M α.

3. Моделирование сужений распределений. В примере раздела 4.2.1 обсуждалась следу-


ющая процедура моделирования равномерного распределения в подграфике H плотности p (см.
рис. 2): нужно моделировать равномерное распределение в прямоугольнике [0, 1] × [0, M ] до тех
пор, пока полученный случайный вектор η не попадет в H. Этот вектор и будет иметь нужное
нам распределение.
57
Здесь используется тот факт, что единственное множество, имеющее считающую меру ноль, является пустым.

38
Конечно, такая интуитивно очевидная процедура нуждается в обосновании. Кроме того, она
структурно похожа на метод отбора, но формально отличается от него, так как на каждом шаге
метода отбора моделируется не только случайная величина η, но и α ∈ U(0, 1). В обсуждаемом
же примере α отсутствует. В этом нужно разобраться.
Начнем с определения сужения и расширения распределений. Пусть на измеримом простран-
стве (D, D) задано распределение Q и пусть G — измеримое подмножество D такое, что Q(G) > 0.
Каждое измеримое множество A ∈ D порождает подмножество A ∩ G множества G, а семейство
DG = {A ∩ G, A ∈ D} является σ-алгеброй.
Таким образом мы приходим к измеримому пространству (G, DG ). Распределение P = Q|G ,
определенное на (G, DG ) равенством

Q(B)
P(B) = Q|G (B) = ,
Q(G)

называется сужением распределения Q на G. Это определение имеет очевидную интерпретацию:


если случайная величина ξ имеет распределение Q, то Q|G — это условное распределение ξ при
условии ξ ∈ G.
Пусть теперь на измеримом пространстве (G, DG ) задано распределение P. Тогда его можно
расширить до распределения P D (A), заданного на (D, D) c помощью формулы

P D (A) = P(A ∩ G), A ∈ D.

Конечно, распределения P и P D различны (они определены на разных пространствах). Но,


поскольку P D (D \ G) = 0, а P(A) = P D (A) при любом измеримом A ⊂ G, то с точки зрения
моделирования этими различиями можно пренебречь.58
Вернемся к моделированию. Рассмотрим измеримое пространство (D, D) и его измеримое
подмножество G. Будем считать, что на (D, D) определено распределение Q такое, что Q(G) > 0.
Наша цель — промоделировать сужение P распределения Q на множество G.
Будем отождествлять расширение P на D с P и найдем производную Радона-Никодима r =
dP/dQ. Нетрудно видеть, что

 1 при x ∈ G,
r(x) = Q(G) (4.2.11)

0 иначе.

Действительно, при A ∈ D
∫ ∫
Q(A ∩ G) 1
P(A) = P(A ∩ G) = = IG dQ = r dQ,
Q(G) Q(G)
A A

где IA — индикатор множества A. Поскольку r ≤ M = 1/Q(G), то мы можем моделировать


распределение P методом отбора с помощью распределения Q.59
Пусть η ∈ Q. Тогда с учетом (4.2.11) основное неравенство метода отбора r(η) > M α приоб-
ретает вид
{
1 > α при η ∈ G,
r(η) > M α ←→
0 > α при η ∈ / G.

Следовательно, событие r(η) > M α эквивалентно (с точностью до события α = 1, которое имеет


нулевую вероятность) событию η ∈ G, и для реализации метода отбора моделировать случайную
величину α просто не нужно.
Запишем соответствующую алгоритмическую схему.
58
С точки зрения моделирования: если α ∈ U(0, 1), то не все ли равно, где определено L(α) — на борелевских
подмножествах R или на борелевских подмножествах (0, 1]?
59
Точнее, мы моделируем расширение на D сужения распределения Q на множество G.

39
Алгоритмическая схема метода отбора для сужения распределения Q на множество G

Результат: ξ.
1. (Отбор) Do η ← Q( · ) while η ∈
/G;
2. (Завершение) ξ ← η; STOP.
Трудоемкость метода равна M = 1/Q(G). Следовательно, чем множество G массивнее, тем
отбор эффективнее. Время исполнения алгоритма зависит и от способа проверки принадлежности
точки η множеству G. В сложных случаях, как и для общего алгоритма, можно использовать
сжимающие функции.
Если взять G1 ⊂ G ⊂ G2 и положить M IG1 (x) = r1 (x) ≤ r(x) ≤ r2 (x) = M IG2 (x), то
при i = 1, 2 проверка неравенств ri (η) > M α сведется к проверки принадлежности точки η
множествам Gi .
Если множества Gi являются «простыми» и достаточно тесно аппроксимируют G, то отбор с
такими ограничениями может оказаться достаточно эффективным. Приведем соответствующую
алгоритмическую схему.

Алгоритмическая схема метода отбора с ограничениями для сужения распределений

Результат: ξ.
1. (Основной цикл отбора)
• Do
⋄ Do (Отбор с проверкой попадания в G1 и G2 )
η ← Q( · );
If η ∈ G1 then (ξ ← η; STOP);
⋄ while η ̸∈ G2 ;
• while η ∈
/ G;
2. ξ ← η; STOP.

4.3 Метод дискретной декомпозиции распределений


4.3.1 Общая схема и примеры
Рассмотрим измеримое пространство (D, D) и конечное или счетное число распределений Pi ,
заданных на этом пространстве. Кроме того, рассмотрим положительные вероятности qi , в сумме
дающие единицу. Тогда распределение

P= qi Pi (4.3.1)
i≥1

называется дискретной композицией (по-другому — дискретной смесью) распределений Pi с ве-


сами qi , а само представление (4.3.1) — дискретной декомпозицией распределения P. Конечно,
если (D, D) = (Rd , Bd ), то (4.3.1) эквивалентно аналогичной декомпозиции функции распределе-
ния F распределения P:

F (x) = qi Fi (x)
i≥1

для любого x ∈ Rd , где Fi — функция распределения распределения Pi . Если же все распреде-


ления Pi абсолютно непрерывны относительно одной и той же меры µ с производными Радона-
Никодима pi , то P тоже абсолютно непрерывна относительно этой меры с производной Радона-
Никодима p = dP/dµ вида

p(x) = qi pi (x) . (4.3.2)
i≥1

Выясним, как можно моделировать распределение P, исходя из представления (4.3.1).

40
Предложение 8. Рассмотрим случайные величины ξn такие, что L(ξn ) = Pi . Кроме того,
пусть τ — независимая от {ξi , i ≥ 1} случайная величина с распределением P(τ = i) = qi . Тогда
случайная величина ξ = ξτ имеет распределение (4.3.1).
Доказательство. Пусть A ∈ D. Тогда
∑ ∑ ∑ ∑
P(ξ ∈ A) = P(ξτ ∈ A, τ = i) = P(ξi ∈ A, τ = i) = P(ξi ∈ A) P(τ = i) = qi Pi (A).
i≥1 i i≥1 i≥1

Доказательство закончено.
Запишем теперь общую алгоритмическую схему, соответствующую Предложению 8. Обозна-
чим Q дискретное распределение, для которого Q({i}) = qi .

Алгоритмическая схема метода дискретной декомпозиции


Результат: ξ.
1. (Выбор компоненты смеси) i ← Q( · );
2. (Моделирование компоненты) ξ ← Pi (· ); STOP.
Одной из основных особенностей метода декомпозиции является принципиальная неоднознач-
ность представления распределения P в виде правой части равенства (4.3.1). С практической же
точки зрения необходимо, чтобы распределения Pi и Q были удобными для моделирования.
Приведем несколько простых примеров использования метода дискретной декомпозиции.

Пример 1. Рассмотрим одномерное абсолютно непрерывное распределение P с плотностью




1/3 при 0 ≤ x ≤ 1;
p(x) = 2/3 при 1 < x ≤ 2; (4.3.3)


0 иначе.
Конечно, это распределение можно моделировать разными способами (например, методом обратных
функций), но нас интересует именно метод декомпозиции.
Легко представить плотность (4.3.3) в виде (4.3.2) (понятно, что здесь мера µ — это одномерная мера
Лебега):
1 2 1 2
p(x) =I(0,1) (x) + I(1,2) (x) = p1 (x) + p2 (x). (4.3.4)
3 3 3 3
Отсюда сразу же получается следующий алгоритм моделирования распределения (4.3.3).

Алгоритм дискретной декомпозиции (4.3.4) для моделирования распределения (4.3.3)


Результат: ξ.
1. (Инициализация) Get(α1 , α2 );
2. (Моделирование смеси) If 3 ∗ α1 < 1 then ξ ← α2 else ξ ← α2 + 1;
3. (Завершение) STOP,
Однако разложение (4.3.4) не является единственно пригодным для моделирования. Например, можно
использовать разложение
2 1 2 1
I(0,2) (x)/2 + I(1,2) (x) = p1 (x) + p2 (x).
p(x) = (4.3.5)
3 3 3 3
Тогда мы придем к следующему алгоритму.

Алгоритм дискретной декомпозиции (4.3.5) для моделирования распределения (4.3.3)


Результат: ξ.
1. (Инициализация) Get(α1 , α2 );
2. (Моделирование смеси) If 3 ∗ α1 < 2 then ξ ← 2 ∗ α2 else ξ ← α2 + 1;
3. (Завершение) STOP.
Отметим, что в разложении (4.3.4) носители плотностей p1 и p2 оказались дизъюнктны, в то время
как в разложении (4.3.5) — нет.

41
Пример 2. Рассмотрим одномерное распределение P с плотностью
( −x
)
p(x) = e−x−1 1 + ee , x > 0. (4.3.6)

В отличие от предыдущего примера здесь наличие удобного для моделирования разложения вида
(4.3.2) не бросается в глаза. Тем не менее,

∑ ∞

1 ( −x )k e−1 −(k+1)x
p(x) = e−x−1 + e−x−1 e = e−x−1 + e =
k! k!
k=0 k=0

∑ −1 ∑∞ ∑∞
e e−1 e−1
= e−1 e−x + (k + 1)e−(k+1)x −1 −x
=e e + me−mx
= pm (x),
(k + 1)! m=1
m! m=0
m!
k=0

где p0 — плотность показательного распределения с параметром 1, а pm при m ≥ 1 — плотности пока-


зательных распределений с параметром m. Отсюда приходим к следующей алгоритмической схеме моде-
лирования распределения (4.3.6) без уточнения способов моделирования показательного распределения и
распределения Пуассона.

Алгоритм дискретной декомпозиции для моделирования распределения (4.3.6)

Результат: ξ.
1. (Инициализация) η ← Exp(1); i ← Π(1);
2. (Моделирование смеси) If i = 0 then ξ ← η else ξ ← η/i;
3. (Завершение) STOP.
Как видно, удачное представление в виде смеси приводит к достаточно компактному способу модели-
рования не слишком простого распределения.

4.3.2 Модификации метода дискретной декомпозиции


На практике для моделирования сложных распределений редко используют один из изложен-
ных общих методов в чистом виде. Как правило, эти методы применяются в виде различных
комбинаций. Многочисленные примеры таких комбинаций можно найти в [13]. Здесь мы приве-
дем две модификации метода дискретной декомпозиции, использующие, кроме того, идеи метода
обратных функций и метода отбора.

1. Дискретная декомпозиция с обращением.


Вообще говоря, метод дискретной декомпозиции по определению требует как минимум двух об-
ращений к генератору псевдослучайных чисел — для моделирования дискретного распределения
Q и для моделирования одного из распределений Pi . Предложение 2 (см. раздел 2.4) показывает,
что в случае, когда распределение Q моделируется методом обратных функций, можно умень-
шить количество обращений к генератору.
Точнее, там доказано, что если распределение Q моделируется как τ = min{i : α1 ≤ si }, где
def
si = q1 + . . . + qi — накопленные вероятности, то β = (α1 − sτ −1 )/qτ ∈ U(0, 1) и случайные
величины β, τ независимы. Тем самым мы можем использовать β для моделирования одного из
распределений Pi .
Этот прием выглядит наиболее эффектно, когда распределения Pi (и, следовательно, распре-
деление P) определены на борелевских подмножествах R.
Действительно, если для распределений Pi применяются моделирующие формулы Gi (α2 ), где
Gi : (0, 1) 7→ R — некоторые функции, то благодаря Предложению 2 в этих формулах вместо α2
мы можем использовать β. Таким образом, в этом случае смесь (4.3.1) будет моделироваться с
помощью одного обращения к генератору.
Конечно, наиболее стандартный выбор функций Gi связан с общим методом обратных функ-
ций раздела 4.1. Разберем этот случай подробнее, сформулировав соответствующий результат в
виде отдельного утверждения.
Рассмотрим разложение (4.3.1) и обозначим Fi функции распределения одномерных распреде-
лений Pi . Кроме того, положим (как в методе обратных функций) Gi (y) = inf{x ∈ R : Fi (x) > y}.
Для дискретного распределения Q определим si = q1 + . . . + qi c s0 = 0.

42
Предложение 9. Пусть α ∈ U(0, 1) и τ = min{i : α ≤ si }. Тогда случайная величина
( )
ξ = Gτ (α − sτ −1 )/qτ (4.3.7)

имеет распределение P.

Доказательство. Пусть α ( 1 ∈) U(0, 1) и α, α1 независимы. Тогда, согласно Предложению 8, слу-


чайная величина ξ1 = Gτ α1 имеет распределение P. По Предложению 2 это распределение не
изменится, если α1 заменить на (α − sτ −1 )/qτ .

Замечание 6. Если носители распределений Pi попарно дизъюнктны, то, как нетрудно видеть,
моделирующая формула (4.3.7) совпадает с моделирующей формулой метода обратных функций
для распределения P.60

Приведем несколько примеров.

Пример 1. Рассмотрим распределение (4.3.3). В разделе 4.3.1 приведены две дискретных декомпози-
ции этого распределения. Согласно Замечанию 6, разложение (4.3.4) для нас не представляет интереса,
так его компоненты имеют дизъюнктные носители. Поэтому остановимся на разложении (4.3.5), которое
в терминах функций распределений имеет вид
2 1
F (x) = F1 (x) + F2 (x),
3 3
где
 

0 при x ≤ 0, 
0 при x ≤ 1,
F1 (x) = x/2 при 0 < x ≤ 2, и F2 (x) = x − 1 при 1 < x ≤ 2,

 

1 при x > 2 1 при x > 2.

Следовательно, в обозначениях Предложения 9 случайная величина τ принимает значения 1 и 2 с


вероятностями 2/3 и 1/3, G1 (y) = 2y и G2 (y) = y + 1. Поэтому мы получаем следующий алгоритм моде-
лирования распределения (4.3.3).

Декомпозиция (4.3.5) с обращением для моделирования распределения (4.3.3)

Результат: ξ.
1. (Инициализация) Get(α); β ← 3 ∗ α;
2. (Моделирование смеси) If β < 2 then ξ ← β else ξ ← β − 1; STOP.
Заметим, что моделирующая функция здесь не является монотонной.

Пример 2. Рассмотрим распределение с плотностью

1 ∑ −1 −x/i
n
p(x) = i e , x > 0, (4.3.8)
n i=1

то есть равновероятную смесь показательных распределений EXP(1/i), i = 1, . . . , n.


Обычный метод дискретной декомпозиции раздела 4.3.1 приводит к следующему алгоритму.

Стандартный метод декомпозиции для моделирования распределения (4.3.8)

Результат: ξ.
1. (Выбор компоненты смеси) Get(α1 ); τ ← ⌈n ∗ α1 ⌉;
2. (Моделирование компоненты) Get(α2 ); ξ ← −τ ∗ ln(α2 ); STOP.
Использование варианта декомпозиции с обращением позволяет сэкономить (на практике — при от-
носительно небольшом n) одно обращение к генератору псевдослучайных чисел.

60
Покажите это.

43
Декомпозиция с обращением для моделирования распределения (4.3.8)

Результат: ξ.
1. (Выбор компоненты смеси) Get(α); τ ← ⌈n ∗ α⌉;
2. (Моделирование компоненты) ξ ← −τ ∗ ln(τ − n ∗ α); STOP.

Обратимся теперь к другой модификации метода декомпозиции, связанной с методом отбора.

2. Метод декомпозиции-дополнения.
Рассмотрим разложение

P = q P1 + (1 − q)P2 , (4.3.9)

где 0 < q < 1 и P1 , P2 — распределения в измеримом пространстве (D, D). Будем считать,
что распределение P1 моделируется методом отбора с помощью распределения Q, причем r =
dP1 /Q(x) ≤ 1/q и используемая в отборе мажоранта M равна 1/q. Тогда алгоритмическая схема
моделирования декомпозиции (4.3.9) может выглядеть следующим образом.

Декомпозиция P с отбором для P1

Входные данные: функция r = dP1 /dQ, число q ∈ (0, 1).


Результат: ξ.
1. (Выбор компоненты и моделирование P1 )
Get(β); If β < q then
( )
• Do η ← Q( · ); Get(α) while q ∗ r(η) ≤ α;
• ξ ← η; STOP.
2. (Моделирование P2 и завершение)
ξ ← P2 ( · ); STOP.
Если через tr обозначить среднее время проверки неравенства q r(η) ≤ α и ввести обозначения
tU , tQ , tP2 для среднего времени моделирования распределений U(0, 1), Q и P2 соответственно, то
среднее время моделирования случайной величины ξ с помощью описанного выше алгоритма
будет иметь вид

tU + q (tQ + tU + tr )/q + (1 − q)tP2 = tQ + 2tU + tr + (1 − q)tP2 . (4.3.10)

В то же время, как следует из Предложения 6 раздела 4.2.2, P(q r(η) < α) = q. Это наво-
дит на мысль, что в случае, когда выполнено неравенство q r(η) < α, нужно (без специального
розыгрыша компоненты декомпозиции) положить ξ = η, а при выполнении противоположного
неравенства — моделировать распределение P2 . Докажем соответствующее утверждение.

Предложение 10. Рассмотрим разложение (4.3.9). Пусть η, ξ2 и α — независимые случайные


def
величины, имеющие распределения Q, P2 и U(0, 1). Предположим, что r(x) = dP1 /dQ(x) ≤ 1/q
при Q-почти всех x. Положим
{
η при q r(η) < α,
ξ= (4.3.11)
ξ2 иначе.

Тогда L(ξ) = P.

Доказательство. При A ∈ D действуя так же, как в Предложении 6, получим, что

P(ξ ∈ A) = P(η ∈ A, q r(η) < α) + P(ξ2 ∈ A, q r(η) ≥ α) =


= q P1 (A) + P(ξ2 ∈ A) P(q r(η) ≥ α) = q P1 (A) + (1 − q)P2 (A) = P(A).

Утверждение доказано.

44
Из Предложения 10 вытекает естественная алгоритмическая схема моделирования распреде-
ления (4.3.9), которую мы опускаем за очевидностью (конечно, проверку неравенства q r(η) < α
можно проводить по-разному, в том числе и с помощью введения сжимающих функций).
Важно подчеркнуть логическую структуру обсуждаемого метода: он следует из разложения
распределения P на две компоненты, одна из которых может быть удобно промоделирована
методом отбора, согласованным с весами разложения. После этого цикл метода отбора заменяется
на его первый шаг, причем в случае невыполнения условий этого шага происходит «дополнение»
— моделируется вторая компонента смеси.
В англоязычной литературе этот метод носит название «the acceptance-complement method»,
см. [10, гл. II.5], мы здесь назовем его методом декомпозиции-дополнения.
Очевидно, что время моделирования случайной величины ξ согласно формуле (4.3.11) равно
tη + tU + tr + (1 − q)tP2 , что на tU меньше, чем в (4.3.10).

Пример 1. Проиллюстрируем эти рассуждения на примере плотности

p(x) = 1 + θ sin(2πx), где x ∈ [0, 1] и 0 < θ ≤ 0.5. (4.3.12)

Эта плотность при θ = 0.01 уже появлялась в связи с обсуждением отбора с ограничениями, см. (4.2.10).
Взяв некоторое 0 < q < 1, представим p(x) в виде

θ
p(x) = q p1 (x) + 1 − q, где p1 (x) = 1 + sin (2πx). (4.3.13)
q
Ясно, что при q ≥ θ функция p1 неотрицательна и, следовательно, является плотностью некоторого
распределения. Тем самым (4.3.13) является частным случаем (4.3.9).
Чтобы применить к распределению (4.3.13) Предложение 10, выберем в качестве Q равномерное рас-
пределение U(0, 1). Тогда r(x) = p1 (x) и max r(x) = 1+θ/q. Для того, чтобы условия Предложения 10 были
выполнены, осталось обеспечить неравенство r(x) ≤ 1/q, которое выполняется, очевидно, при q ≤ 1 − θ.
Итак, выбрав θ ≤ q ≤ 1 − θ, приходим к следующему алгоритму.

Алгоритм декомпозиции-дополнения для распределения (4.3.12)

Входные данные: θ ∈ (0, 0.5], q ∈ [θ, 1 − θ], ϑ = 8 arctan(1).


Результат: ξ.
1. (Выбор первой компоненты) Get(α1 , α2 ); If q + θ ∗ sin(ϑ ∗ α1 ) ≤ α2 then (ξ ← α1 ; STOP);
2. (Вторая компонента) Get(α3 ); ξ ← α3 ; STOP.
Ясно, что для реализации алгоритма понадобится в среднем 3 − q обращения к генератору псевдослучай-
ных чисел и одна проверка неравенства q +θ sin(ϑα1 ) ≤ α2 . Если считать, что трудоемкость этой проверки
не зависит от q, то следует выбирать q максимально возможным, то есть полагать q = 1 − θ.
Как показано в [10, разд. II.5.4] метод декомпозиции-дополнения удобно использовать для модели-
рования распределений, близких к равномерному. Пример с распределением (4.3.12) относится именно к
такому случаю.

4.3.3 Общий метод декомпозиции.


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

Предложение 11. Пусть (Ω, F, P) — вероятностное пространство. Рассмотрим отображение η :


(Ω, F) 7→ (G, G) и функцию f : (Ω × G, F × G) 7→ (R, BR ). Если E|f (ω, η)| < ∞ и для любого t ∈ G
случайная величина f ( · , t) и отображение η независимы, то

Ef (ω, T ) = Ef (ω, t)Pη (dt). (4.3.14)
G

45
Доказательство. Поскольку случайные величины f ( · , t) и η независимы, то, не умаляя общности, можно
считать, что они определены на разных вероятностных пространствах.61 Точнее, рассмотрим вероятност-
ные пространства (Ω1 , F1 , P1 ) и (Ω2 , F2 , P2 ), являющиеся копиями (Ω, F, P). Положим Ω∗ = Ω1 × Ω2 ,
F ∗ = F1 × F2 и P ∗ = P1 ⊗ P2 . ( )
∗ ∗
( Далее, ) для∗ω = (ω1 , ω2 ) ∈ Ω определим f ∗ (ω ∗ , t) = f (ω1 , t) и η ∗ (ω ∗ ) = η(ω2 ). Ясно, что L f ∗ ( · , t) =
L f ( · , t) , L(η ) = L(η), причем f ∗ (ω ∗ , t) и η ∗ независимы. Поэтому

Ef (ω, η) = E∗ f ∗ (ω ∗ , η ∗ ) = f (ω1 , η(ω2 ))P1 (dω1 ) P2 (dω2 ) =
Ω1 ×Ω2
∫ ∫ ∫
= Pη (dt) f (ω1 , t)P1 (dω1 ) = Pη (dt)Ef (ω, t).
G Ω1 G

Утверждение доказано.

К собственно моделированию имеет отношение следующее следствие из Предложения 11.


Следствие 4. Пусть отображения ξ : (Ω, F) 7→ (D, D) и η : (Ω, F) 7→ (G, G) заданы на вероятностном
пространстве (Ω, F, P). Предположим кроме того, что существует такое отображение β (·) : (G ×
Ω, G × F) 7→ (D, D), что
ξ(ω) = βη(ω) (ω), (4.3.15)
где при любом t ∈ G случайная величина βt ( · ) не зависит от η.
Тогда для любых A ∈ D и B ∈ G

P(ξ ∈ A, η ∈ B) = P(βt ∈ A)Pη (dt). (4.3.16)
B

В частности,

P(ξ ∈ A) = P(βt ∈ A)Pη (dt), (4.3.17)
G

Доказательство.
( ) Для доказательства (4.3.16) достаточно применить Предложение 11 к функции f (ω, t) =
IA βt (ω) IB (t).

Общая алгоритмическая схема моделирования случайной величины ξ, вытекающая из представления


(4.3.17) Следствия 4, основана на задании функции β, удовлетворяющей (4.3.15), и выглядит следующим
образом. 62

Алгоритмическая схема общего метода декомпозиции

Входные данные: функция β.


Результат: ξ.
1. (Выбор компоненты смеси η) t ← Pη ( · );
2. (Моделирование ξ) ξ ← βt ; STOP.

Замечание 7. Отметим частные случаи общего утверждения Следствия 4. Если η — дискретная случай-
ная величина, то общая декомпозиция сводится к дискретной декомпозиции раздела 4.3.1. Рассмотрим
абсолютно непрерывный случай.
Пусть совместное распределение ξ, η имеет плотность распределение (то есть производную Радона-
Никодима) pξη (x, t) относительно меры µ(dx) ⊗ ν(dt) в (D × G, D × G). Тогда, как обычно, случайные
величины ξ и η обладают плотностями
∫ ∫
pξ (x) = pξη (x, t)ν(dt) и pη (t) = pξ,η (x, t)µ(dx)
G D

61
С практической точки зрения это означает, что при моделировании случайных величин f ( · , t) и η используются
наборы αi с непересекающимися номерами.
62
Если наша цель — промоделировать вектор (ξ, η), то вместо (4.3.17) необходимо пользоваться (4.3.16). Алго-
ритм при этом практически не меняется.

46
относительно мер µ и ν соответственно.
Обозначим D0 = {t : pη (t) ̸= 0} и положим

 pξη (x, t) если t ∈ D0 ,
pξ|η (x | t) = pη (t) (4.3.18)

pξ (x) если t ∈
/ D0 .

Тогда, учитывая, что Pη (D0 ) = 1, получим цепочку равенств


   
∫ ∫ ∫ ∫ ∫
 pξ|η (x | t)µ(dx) Pη (dt) =  pξη (x, t)µ(dx)  Pη (dt) + P(ξ ∈ A)Pη (dt) =
pη (t)
B A B∩D0 A B∩D0c
 
∫ ∫
=  pξη (x, t))µ(dx) ν(dt) = P(ξ ∈ A, η ∈ B ∩ D0 ) = P(ξ ∈ A, η ∈ B).
B∩D0 A

Это означает, (см. (4.3.16)), что для получения реализации случайной величины βt нужно моделиро-
вать распределение с плотностью (4.3.18) относительно меры µ(dx).63

Понятно, что применение общего метода декомпозиции для моделирования требует немалого искус-
ства,64 поэтому этот метод применяется не так часто. Приведем несколько примеров его использования.

Пример 3. (Негативно-биномиальное распределение.)


Рассмотрим негативно-биномиальное распределение NB(k, p) c параметрами k > 0, p ∈ (0, 1). Это дис-
кретное распределение задается таблицей
( )
0 1 ... n ... Γ(n + k) k
P: , где pn = p (1 − p)n .
p0 p1 . . . pn . . . Γ(k) n!

Конечно, такое распределение можно моделировать нетабличным методом обратных функций. Кроме
того, при целом k случайная величина, равная числу неудач до k-го успеха в испытаниях Бернулли с
вероятностью успеха p, имеет как раз распределение NB(k, p). Можно, однако, использовать для модели-
рования распределения NB(k, p) и метод декомпозиции.
Действительно, пусть случайная величина η имеет гамма-распределение Gamma(k, µ) с параметрами
(k, µ),65 а семейство случайных величин βλ ( · ) обладает следующими свойствами: во-первых, βλ ( · ) не
зависит от η, во-вторых, βλ ( · ) ∈ Π(λ) и, наконец, функция βλ (ω) измерима по паре (λ, ω).66 Тогда,
согласно Следствию 4,
∫∞ ∫∞ ∫∞
λn −λ µk µk
P(βη = n) = P(βλ = n)gk,µ (λ)dλ = e λk−1 e−µ λ dλ = λk+n−1 e−(µ+1) λ dλ =
n! Γ(k) Γ(k) n!
0 0 0
k
( )k ( )n
µ Γ(n + k) Γ(n + k) µ 1
= n+k
= .
Γ(k) n! (µ + 1) Γ(k) n! µ+1 µ+1

Тем самым мы получили распределение NB(k, p) с p = µ/(1 + µ). Поскольку параметр µ является пара-
метром масштаба гамма-распределения, отсюда сразу же следует алгоритмическая схема моделирования
распределения NB(k, p). Так как здесь не уточняется метод моделирования распределения Пуассона, то
вместо оператора ξ ← βλ в алгоритме записан оператор ξ ← Π(λ).

Алгоритмическая схема моделирования распределения NB(k, p) методом декомпозиции

Входные данные: k, p.
Результат: ξ.
63
Плотность (4.3.18) называется условной плотностью ξ при условии η = t. В общем случае распределение
случайной величины βt — это регулярный вариант условного распределения ξ при условии η = t. Нам, однако,
терминология и техника условных распределений здесь не понадобится.
64
Нужно уметь находить как подходящее разложение (4.3.17) распределения P, так и функцию β.
65
То есть имеет плотность gk,µ (λ) = µk λk−1 e−µ λ /Γ(k), сосредоточенную на (0, ∞). О моделировании гамма-
распределения см. раздел 5.3.3.
66
Последнее свойство всегда выполняется при моделировании. Например, оба метода моделирования распреде-
ления Пуассона (см. раздел 3.2) именно такие.

47
1. (Инициализация) µ ← p/(1 − p);
2. (Выбор компоненты смеси) s ← Gamma(k, 1); λ ← s/µ;
3. (Моделирование компоненты) ξ ← Π(λ); STOP.
Конечно, трудоемкость этого метода будет зависеть от выбранных способов моделирования гамма-
распределения и распределения Пуассона.

Пример 4. (Двумерное нормальное распределение.)


Плотность невырожденного двумерного нормального распределения, как известно,67 имеет вид
( )
1 (x1 −a1 )2 (x1 −a1 )(x2 −a2 ) (x2 −a2 )2
1 − −2ρ +
pξ1 ξ2 (x1 , x2 ) = √ e 2(1−ρ)
2 σ12 σ1 σ2 σ22 , (4.3.19)
2πσ1 σ2 1−ρ2

где a1 , a2 — математические ожидания координат случайного вектора (ξ1 , ξ2 )T , имеющего распределение


(4.3.19), σ12 , σ22 — соответствующие (положительные) дисперсии, а ρ ∈ (−1, 1) — коэффициент корреляции
между ξ1 и ξ2 .
Обсудим использование Следствия 4 для моделирования распределения (4.3.19), считая, что мы уже
умеем моделировать стандартное нормальное распределение N(0, 1). Тогда, если ε ∈ N(0, 1), то σε + a ∈
N(a, σ 2 ).
Прежде всего, положим a1 = a2 = 0. Нетрудно видеть,68 что ξ1 ∈ N(0, σ12 ). Кроме того, условная плот-
ность pξ2 | ξ1 (x2 | x1 ) = pξ1 ξ2 (x1 , x2 )/pξ1 (x1 ) является69 плотностью нормального распределения N(θ, τ 2 ) с
θ = θ(x1 ) = ρσ2 x1 /σ1 и τ = (1 − ρ2 )σ22 . √
Поэтому (см. Замечание 7) в нашем случае βt = ρσ2 t/σ1 + σ2 1 − ρ2 ε2 , где ε2 ∈ N(0, 1) и не зави-
сит от ξ1 . Соответствующий вариант общей алгоритмической схемы декомпозиции может быть записан
следующим образом.70

Алгоритмическая схема моделирования двумерного нормального распределения



Входные данные: a1 , a2 , σ1 , σ2 , ρ, δ = 1 − ρ2 .
Результат: ξ1 , ξ2 .
1. (Моделирование N(0, σ12 )) ε1 ← N(0, 1); ξ1 ← σ1 ∗ ε1 ;
( )
2. (Моделирование условного распределения) ε2 ← N(0, 1); ξ2 ← σ2 ∗ ρ ∗ ε1 + δ ∗ ε2 ;
3. (Восстановление средних) ξ1 ← ξ1 + a1 ; ξ2 ← ξ2 + a2 ; STOP.
Замечание 8. Приведенный выше алгоритм имеет и другое обоснование. Действительно, поскольку речь
идет о двумерном гауссовском распределении, то для моделирования ξ2 можно использовать формулу
(5.2.2) Леммы 4 раздела 5.2, положив k = 1. Это легко проверить,71 если заметить, что (одномерный)
вектор β 2 равен ρσ1 σ2 , а (1 × 1)-матрица Σ1 имеет вид (σ12 ).

Пример 5. (Равномерное распределение в подграфике плотности.)


Рассмотрим двумерную область D, являющуюся подграфиком плотности pξ1 распределения P1 , и поста-
вим задачу моделирования распределения U(D) с плотностью pξ1 ,ξ2 (x1 , x2 ) = ID (x1 , x2 ).72
Если область D является неограниченной, то такая задача может оказать непростой. Покажем, как
ее можно решать методом декомпозиции в предположении, что существует достаточно простой алгоритм
моделирования распределения P1 .
Заметим, что
ID (x1 , x2 ) 1
pξ2 | ξ1 (x2 | x1 ) = pξ1 ξ2 (x1 , x2 )/pξ1 (x1 ) = = I(0,pξ1 (x1 )) (x2 ),
pξ1 (x1 ) pξ1 (x1 )
то есть эта условная плотность является равномерной на (0, pξ1 (x1 )). Поэтому, если мы уже получили реа-
лизацию t случайной величины ξ1 с плотностью pξ1 , то, согласно Замечанию 7, ξ2 должна быть равномерно
распределена на интервале (0, s) c s = pξ1 (t), что не представляет сложности для моделирования.
67
см. Лемму 9 Приложения 2. Как из (8.2.1) получить (4.3.19)?
68
Проверьте это.
69
Проверьте!
70
Отметим, что в алгоритме сначала моделируется двумерное нормальное распределение с нулевыми средними,
а потом делается очевидный переход к средним a1 , a2 .
71
Так проверьте!
72
Если (η1 , η2 ) ∈ U(D), то η1 имеет плотность pξ1 .

48
Проиллюстрируем эту идею в случае, когда pξ1 является плотностью распределения Парето с па-
раметром γ > 0,73 то есть когда pξ1 (x1 ) = γx1γ−1 I(0,1) (x1 ). Согласно разделу 4.1.1, ξ1 моделируется как
1/γ
ξ1 = α1 . Тогда можно положить
(γ−1)/γ
ξ2 = α2 γξ1γ−1 = γα2 α1 = γα1 α2 /ξ1 .

Запишем соответствующий алгоритм.

Алгоритмическая схема моделирования равномерного распределения в подграфике


плотности Парето

Входные данные: γ > 0.


Результат: ξ1 , ξ2 .
1. (Моделирование абсциссы) Get(α1 ); ξ1 ← α1 ∧ (1/γ);
2. (Моделирование условного распределения) Get(α2 ); ξ2 ← γ ∗ α1 ∗ α2 /ξ1 ; STOP.

73
Если γ < 1, то подграфик плотности Парето является неограниченным.

49
5 Приемы моделирования различных распределений
В этом разделе мы кратко остановимся на методах моделирования некоторых популярных рас-
пределений, рассматривая, как обычно, лишь простые для реализации алгоритмы.

5.1 Полярные методы


Группа полярных методов предназначена для моделирования распределений, так или иначе свя-
занных с двумерными распределениями, инвариантными относительно вращений.

5.1.1 Равномерное распределение на окружности S1


По определению, случайный вектор ξ¯ = (ξ1 , ξ2 )T равномерно распределен на единичной окруж-
ности S1 с центром в нуле, если ξ12 + ξ22 = 1 с вероятностью 1 и если полярный угол φ вектора ξ¯
равномерно распределен на [0, 2π).
Из этого определения сразу же следует моделирующая формула для равномерного распреде-
ления на S1 :

ξ1 = cos(2πα), ξ2 = sin(2πα). (5.1.1)

Вычисление двух тригонометрических функций, однако, может оказаться трудоемкой опера-


цией.74 Стандартной альтернативой формуле (5.1.1) является использование метода отбора для
моделирования равномерного распределения в единичном круге B1 (0) = {(x, y) : x2 + y 2 < 1} с
центром в нуле с последующей нормировкой результата. Формальное обоснование этой достаточ-
но очевидной процедуры следует из материала раздела 7.2.2.
Запишем соответствующий алгоритм.

Моделирование равномерного распределения на окружности S1 полярным методом

Результат: (ξ1 , ξ2 ).
1. (Отбор в круг)
• Do
Get(α1 , α2 ); β1 ← 2 ∗ α1 − 1; β2 ← 2 ∗ α2 − 1; d ← β1 ∗ β1 + β2 ∗ β2 ;
• While d > 1;
2. (Нормировка) t ← sqrt(d); ξ1 ← β1 /t; ξ2 ← β2 /t; STOP.
Нетрудно видеть, что здесь трудоемкость отбора равна M = 4/π ≈ 1.27. Поэтому для модели-
рования равномерного распределения на окружности требуется (в среднем) 8/π ≈ 2.55 обращений
к генератору псевдослучайных чисел и одно извлечение квадратного корня.

Замечание 9. Заметим, что при использовании обсуждаемого метода теряется информация о


полярном радиусе r случайного вектора, равномерно распределенного в B1 (0). Согласно разделу
7.2.1 Приложения 1, этот полярный радиус имеет плотность распределения pr (t) = 2t1(0,1) или,
что тоже самое, функцию распределения


0 при t ≤ 0,
Fr (t) = t2 при 0 < t ≤ 1,


1 при t > 1.
74
Конечно, прямое вычисление одной из этих функций (например, cos) можно заменить на ее выражение через
вторую с присвоением соответствующего знака:
{√
1 − sin2 (2πα) при |α − 0.5| > 0.25,
cos(2πα) = √
− 1 − sin2 (2πα) иначе.

Это несколько убыстряет процедуру, но не решает полностью всю проблему.

50

Поэтому P(r2 < t) = P(r < t) = t при t ∈ [0, 1] и, следовательно, случайная величина d = r2
(полученная в алгоритме после отбора по условию d ≤ 1) равномерно распределена на (0, 1].
Кроме того, эта случайная величина не зависит от моделируемой точки на окружности.
Следовательно, если полярный алгоритм моделирования равномерного распределения на S1
используется в цикле, то можно сэкономить одно обращение к генератору псевдослучайных чи-
сел, использовав для этой цели квадрат полярного радиуса d, полученный при предыдущем мо-
делировании. При такой организации нам потребуется в среднем 8/π − 1 ≈ 1.55 обращений к
генератору псевдослучайных чисел.75

5.1.2 Нормальное распределение


Быстрому и качественному моделированию нормального распределения N(a, σ 2 ) посвящено мно-
жество публикаций (см., например обзор в [10, гл. IX]; некоторые методы подробно описаны в
[19, раздел 3.4.1]). Однако самые эффективные из разобранных там алгоритмов являются непро-
стыми для реализации, поэтому мы остановимся лишь на наиболее популярных методах.
Конечно, нам достаточно уметь моделировать стандартное нормальное распределение N(0, 1).
Если в наличии имеется быстрая и точная процедура вычисления обратной функции Ψ к функции
распределения
∫x
1
e−t /2 dt
2
Φ(x) = √

−∞

стандартного нормального распределения, то, вполне возможно, нужно использовать именно этот
способ моделирования. Альтернативой является полярный метод, где моделируются две незави-
симые случайные величины ξ1 , ξ2 , каждая из которых имеет распределение N(0, 1).
Действительно, поскольку совместная плотность распределения ξ1 , ξ2 имеет вид
1 −(x2 +y2 )/2
p(x, y) = e , x, y ∈ R ,

то, как следует из раздела 7.2.1 Приложения 1, полярный радиус r и полярный угол φ слу-
чайного вектора (ξ1 , ξ2 ) независимы, причем полярный угол равномерно распределен на [0, 2π), а
полярный радиус имеет распределение Рэлея (4.1.3). Отсюда, применяя моделирующую формулу
(4.1.4), сразу же приходим к представлению
√ √
ξ1 = −2 ln(α1 ) cos(2πα2 ), ξ2 = −2 ln(α1 ) sin(2πα2 ), (5.1.2)

где α1 , α2 ∈ U(0, 1).76


Конечно, формулы (5.1.2) можно непосредственно использовать для моделирования (сразу
двух независимых) реализаций случайных величин с нормальным распределением. Заменяя, как
и в разделе 5.1.1, вычисление синуса и косинуса моделированием вектора, равномерно распре-
деленного на S1 , приходим к следующему полярному алгоритму моделирования нормального
распределения.

Моделирование нормального распределения N(0, 1) полярным методом

Результат: (ξ1 , ξ2 ).
1. (Отбор в круг)
• Do
Get(α1 , α2 ); β1 ← 2 ∗ α1 − 1; β2 ← 2 ∗ α2 − 1; d ← β1 ∗ β1 + β2 ∗ β2 ;
• While d > 1;
( )
3. (Моделирование) Get(α), t ← sqrt − ln(2 ∗ α)/d ; ξ1 ← β1 ∗ t; ξ2 ← β2 ∗ t; STOP.
75
Конечно, возможно и другое использование случайной величины d, не связанное с моделированием равномер-
ного распределения на S1 .
76
Иногда формулу (5.1.2) называют преобразованием Бокса-Мюллера.

51
Ясно, что этот алгоритм требует в среднем 8/π+1 обращений к генератору, а также по одному
вычислению логарифма и квадратного корня. Поскольку в результате получается две независи-
мые реализации нормального распределения, то на каждую из них приходится 4/π + 0.5 ≈ 1.77
обращений к генератору, а также по 0.5 вычислений логарифма и квадратного корня.
Для уменьшения числа обращений к генератору псевдослучайных чисел можно использовать
идею Замечания 9. А именно, для моделирования полярного радиуса вместо α можно взять
величину d, которая не зависит от полярного угла и равномерно распределена на (0, 1]. Тогда мы
придем к модифицированному полярному методу.

Моделирование нормального распределения N(0, 1) модифицированным полярным методом

Результат: (ξ1 , ξ2 ).

1. (Отбор в круг)
• Do
Get(α1 , α2 ); β1 ← 2 ∗ α1 − 1; β2 ← 2 ∗ α2 − 1; d ← β1 ∗ β1 + β2 ∗ β2 ;
• While d > 1;
( )
3. (Моделирование) t ← sqrt − ln(2 ∗ d)/d ; ξ1 ← β1 ∗ t; ξ2 ← β2 ∗ t; STOP.

Здесь на одну реализацию нормального распределения приходится 4/π ≈ 1.27 обращений к


генератору.

5.1.3 Равномерное распределение на сфере S2


Результаты, изложенные в Приложении 1 (см. раздел 7.2.2), позволяют выдвинуть несколько идей
по поводу моделирования равномерного распределения на сфере {(x, y, z) : x2 + y 2 + z 2 = 1}.77

1. Если у нас есть быстрый


(√ метод моделирования
) случайного вектора η ∈ R3 с плотностью
распределения вида f x2 + y 2 + z 2 , то нормировка этого вектора ξ = η/∥η∥ даст нам
искомый результат. У нас уже есть два естественных варианта реализации такой идеи.

• Можно в качестве распределения вектора η взять равномерное распределение в ша-


ре {(x, y, z) : x2 + y 2 + z 2 ≤ 1} и моделировать это распределение отбором из куба
[−1, 1]3 . Иначе говоря, можно попробовать перенести на трехмерное пространство ме-
тод, описанный в разделе 5.1.1. Отбор из трехмерного куба во вписанный шар, однако,
имеет среднее число циклов, равное 6/π ≈ 1.91, так что метод оказывается слишком
трудоемким.78
• Можно также взять η = (η1 , η2 , η3 )T , где ηi ∈ N(0, 1) и независимы. Если у нас есть
быстрый метод моделирования нормального распределения, этот метод глядится впол-
не приемлемым.79

2. Как отмечено в разделе 7.2.2 Приложения 1, координаты случайного вектора, равномерно


распределенного на сфере S2 , могут быть представлены в виде

ξ1 = cos(φ) cos(θ), ξ2 = sin(φ) cos(θ), ξ3 = sin(θ), (5.1.3)

где (см. формулу (7.2.8)) случайные величины φ и θ независимы, φ ∈ U(0, 2π) и θ имеет
плотность распределения pθ (x) = 0.5 cos(x)1(−π/2,π/2) (x).
Сама по себе моделирующая формула (5.1.3) вряд ли пригодна для практики. Можно, од-
нако, заметить, то условное распределение вектора (ξ1 , ξ2 )T при условии ξ3 = t является
77
Интерес к равномерному распределению на S2 связан с необходимостью в ряде физических задач моделировать
случайное направление в R3 .
78
В бо́льших размерностях ситуация еще хуже, так как отношение объема шара к объему описанного вокруг
него куба быстро стремится к нулю с увеличением размерности.
79
Более того, он, вообще говоря, годится для сферы любой не слишком большой размерности d > 1, поскольку
трудоемкость этого метода растет линейно с ростом d.

52

равномерным на окружности радиуса 1 − t2 с центром в нуле. Поскольку ξ3 ∈ U(−1, 1)
(об этом также см. раздел 7.2.2), то появляется реальная альтернатива моделирующей фор-
муле (5.1.3).

Обсудим алгоритм, реализующий эти рассуждения. Начинается алгоритм с моделирования


равномерного распределения на окружности полярным методом раздела 5.1.1 (это нужно для
генерации первых двух координат вектора ξ), а получающаяся при этом случайная величина d,
равномерно распределенная на (0, 1], будет использоваться для моделирования ξ3 .
Иначе говоря, после применения полярного метода раздела 5.1.1, мы получим случайный
вектор η = (η1 , η2 )T , равномерно распределенный на S1 , и случайную величину d ∈ U(0, 1),
независимую с η. Конечно, мы полагаем√ξ3 = 2d −√ 1. Что касается вектора
√ (ξ1 , ξ2 )T , то он будет
получаться умножением η на величину 1 − ξ3 = 1 − (2d − 1) = 2 d(1 − d).
2 2

Запишем соответствующий алгоритм.

Моделирование равномерного распределения на сфере S2 полярным методом

Результат: (ξ1 , ξ2 , ξ3 ).
1. (Отбор в круг)
• Do
Get(α1 , α2 ); β1 ← 2 ∗ α1 − 1; β2 ← 2 ∗ α2 − 1; d ← β1 ∗ β1 + β2 ∗ β2 ;
• While d > 1;
3. (Нормировка и результат) t ← 2 ∗ sqrt(1 − d); ξ1 ← β1 ∗ t; ξ2 ← β2 ∗ t; ξ3 ← 2 ∗ d − 1; STOP.

√ множитель 2 1 − d в третьем
Отметим, что пункте алгоритма
√ получается из произведения
нормировки 1/ d в полярном методе для S2 и множителя 2 d(1 − d) для ξ1 , ξ2 .
Как и в полярном метод для моделирования равномерного распределения на окружности,
здесь требуется (в среднем) 8/π ≈ 2.55 обращений к генератору псевдослучайных чисел и одно
извлечение квадратного корня.

5.1.4 Распределение Коши


Обратные функции. В разделе 4.1.1 показано, что (модифицированный) метод обратных
функций для моделирования распределения Коши сводится к использованию моделирующей
формулы ξ = cot(πα) = cos (πα)/ sin (πα). Если функция котангенс считается достаточно быстро,
то метод обратных функций оказывается вполне конкурентоспособным.
( )T
Полярный метод. Так как вектор sin (πα), cos (πα) равномерно распределен на половине
окружности {(x, y) : y > 0, x2 + y 2 = 1}, то не представляет труда описать полярный метод
моделирования распределения Коши: нужно методом отбора из прямоугольника [−1, 1] × [0, 1]
получить вектор η, имеющий равномерное распределение в полукруге {(x, y) : y > 0, x2 +y 2 < 1}
и взять отношение его ординаты к абсциссе.80

Моделирование распределения Коши полярным методом

Результат: ξ.
1. (Отбор в полукруг)
• Do
Get(α1 , α2 ); β ← 2 ∗ α1 − 1; d ← β ∗ β + α2 ∗ α2 ;
• While d > 1;
3. (Результат) ξ ← α2 /β; STOP.
В среднем метод требует 8/π обращений к генератору. Кроме того, «бесплатно» моделируется
случайная величина d ∈ U(0, 1), независимая от ξ.
80
Нормировать вектор η на его длину не нужно, так как нас интересует только котангенс соответствующего угла.

53
Моделирование через нормально распределенные случайные величины. Хорошо из-
вестно, что отношение двух независимых N(0, 1)-распределенных случайных величин имеет рас-
пределение Коши.81 Этот факт можно использовать при моделировании, если есть быстрый метод
генерирования нормального распределения.82

5.2 Моделирование многомерных гауссовских распределений


При моделировании многомерных гауссовских распределение (определение и свойства см. в При-
ложении 2) источником случайности естественно считать последовательность {εn , n ≥ 1} неза-
висимых нормально распределенных случайных величин со нулевым средним и единичной дис-
персией. Как обычно в таких случаях, метод моделирования εn ∈ N(0, 1) мы уточнять не будем.
Итак, рассмотрим два наиболее популярных метода моделирования распределения Nd (a, Σ).

Метод разложения ковариационной матрицы. Пусть µ1 ≥ . . . ≥ µd ≥ 0 — собственные


числа матрицы Σ, упорядоченные по убыванию с учетом кратности. Как и в Лемме 8 Приложе-
ния 2, обозначим U1 , . . . , Ud соответствующую ортонормированную систему собственных векторов
и положим U = [U1 : . . . : Ud ]. Кроме того, обозначим Λ диагональную матрицу с элементами
λjj = µj . Наконец, пусть E — d-мерный вектор с компонентами ε1 , . . . , εd .
Как следует из той же Леммы 8, в этих условиях U Λ1/3 E ∈ Nd (0, Σ). Следовательно,
def
ξ = a + U Λ1/2 E ∈ Nd (a, Σ). (5.2.1)

Формула (5.2.1) по существу является моделирующей формулой для распределения Nd (a, Σ).
Соответствующий метод (метод разложения ковариационной матрицы) может считаться уни-
версальным, если только есть уверенность в достаточной точности нахождения собственных чи-
сел и собственных векторов матрицы Σ.83
Замечание 10. Обозначим k = max(j : µj > 0) и предположим, что k < d. Кроме того, пусть
U (k) = [U1 : . . . : Uk ], Λk — диагональная k × k матрица с λjj = µj > 0, и Ek = (ε1 , . . . , εk )T . Тогда,
1/2
как нетрудно видеть,84 (5.2.1) перепишется как ξ = a + U (k) Λk E k . Таким образом, если матрица
Σ вырождена и имеет ранг k, то для моделирования распределения Nd (a, Σ) нужно k (а не d) раз
генерировать стандартное нормальное распределение.

Невырожденное распределение. Итерационный метод. Итерационный метод моделиро-


вания многомерного невырожденного гауссовского распределения основан на следующем простом
утверждении.85
Рассмотрим симметричную положительно определенную (и, следовательно, невырожденную)
матрицу Σ размерности d × d. При 1 ≤ j ≤ d обозначим Σj подматрицу матрицы Σ, находящуюся
на пересечении первых j столбцов с первыми j строками Σ. Последний столбец матрицы Σj
( T )T
обозначим β j , σj2 , где σj2 — j-й диагональный элемент матрицы Σ = Σd , а β j ∈ Rj−1 .
Кроме того, для произвольного вектора a = (a1 , . . . , ad )T ∈ Rd обозначим aj = (a1 , . . . , aj )T .

− β k+1 Σ−1
def T
Лемма 4. 1. Для любого 1 ≤ k < d выполнено неравенство ∆2k+1 = σk+1 2
k β k+1 > 0.
2. Пусть ξ k ∈ Nk (ak , Σk ) и εk+1 ∈ N(0, 1), причем εk+1 и ξ k независимы. Обозначим
( )
ξk+1 = ak+1 + β k+1 Σ−1
T
k ξ k − ak + ∆k+1 εk+1 (5.2.2)
81
Проверьте!
82
Конечно, полярный метод раздела 5.1.2 для этих целей не годится.
83
В некоторых случая, когда матрица Σ имеет простую структуру, оказывается возможным находить в явном
виде линейное преобразование, переводящее E в ξ.
84
Проверьте!
85
Существует различные способы доказательства Леммы 4 (например, можно явно выписать линейное отоб-
T )T
ражение (ξ k , εk+1 7→ ξ k+1 и затем пересчитать соответствующие плотности). Наиболее естественный из этих
способов использует тот факт, что условное математическое ожидание ξk+1 при условии ξ k совпадает с линейной
регрессией ξk+1 на ξ k (ср. Пример 4 раздела 4.3.3 про моделирование двумерного нормального распределения).
Приведенное ниже доказательства выбрано из соображений замкнутости и компактности изложения.

54
( T )T
и положим ξ k+1 = ξ k , ξk+1 . Тогда ξ k+1 ∈ Nk (ak+1 , Σk+1 ).
( )T
Доказательство. 1. По условию, X T Σk+1 X > 0 для любого X ̸= 0. Возьмем X = Y T , −1 где
Y = Σk−1 β k+1 . Так как
( )
Σk β k+1
Σk+1 = T 2
,
β k+1 σk+1
то
( )( ) ( )
Σk β k+1 Y Σk Y − β k+1
0 < X T Σk+1 X = (Y T , −1) T = (Y T , −1) T =
2
β k+1 σk+1 −1 β k+1 Y − σk+1
2

= Y T Σk Y − 2βk+1
T 2
Y + σk+1 T
= βk+1 Σ−1 −1 T −1
k Σk Σk β k+1 − 2βk+1 Σk β k+1 + σk+1 =
2

2
= σk+1 − βk+1
T
Σ−1
k β k+1 .

2. Конечно, достаточно рассмотреть случай a = 0. Прежде всего, случайный вектор η k+1 =


( T )T
ξ k , εk+1 является гауссовским (это проверяется непосредственно по определению, см. Прило-
( T )T
жение 2). Следовательно, вектор ξ k+1 = ξ k , ξk+1 тоже гауссовский как результат линейного
преобразования вектора η k+1 .86
Поэтому нам осталось проверить, что ковариации случайной величины ξk+1 с координатами
T
случайного вектора ξ k+1 ровно такие, как нужно. Действительно, так как Eξ k ξ k = Σk , то
( T ) T
Eξk+1 ξ k = E β k+1 Σ−1 −1 −1
T T T T T
k ξ k + ∆k+1 εk+1 ξ k = β k+1 Σk Eξ k ξ k = β k+1 Σk Σk = β k+1 .

Кроме того,
( T )
= E β k+1 Σ−1
T −1
Eξk+1
2 2
k ξ k ξ k Σk β k+1 + ∆k+1 =
( T ) −1
= β k+1 Σ−1 −1
T T
k E ξ k ξ k Σk β k+1 + σk+1 − β k+1 Σk β k+1 = σk+1 .
2 2

Утверждение доказано.

Замечание 11. Для фиксированного k второе утверждение леммы остается верным, если от-
казаться от предположения, что матрица Σk+1 невырожденная (достаточно ее неотрицательной
определенности). Если rank Σk+1 < k + 1, то ∆2k+1 = 0.87
Формулы (5.2.2) при 1 ≤ k < d фактически являются моделирующими для распределения
Nd (a, Σ). К ним нужно только присоединить инициализацию: ξ1 = a1 + σ1 ε1 .
Алгоритм, основанный на Лемме 4, в общем случае, конечно же, очень трудоемкий.88 Он
может быть напрямую использован при небольших d (см. Замечание 8 раздела 4.3.3 для d = 2)
или в случае, когда ковариационная матрица Σ имеет специфическую структуру, позволяющую
проводить вычисление векторов βk+1T Σ−1 в явном виде. Приведем в виде задач два подобных
k
примера. 89

Пример. Пусть σi > 0 при i = 1, . . . , d. Обозначим для краткости ∆j = σ12 + . . . + σj2 .


Промоделировать
( ) гауссовское распределение Nd (0, Σ), где элементы rij матрицы Σ имеют вид
a) rij = min (∆i , ∆j ),
b) rij = min ∆i , ∆j − 2∆i ∆j + ∆i ∆j ∆d .
Более интересный для практики представляет собой случай, когда матрица Σ является Теплицевой,
то есть когда ковариации rij зависят только от |i − j|. В этом случае для обращения невырожденных
Теплицевых матриц Σk можно использовать алгоритм Левинсона или его варианты. Такие алгоритмы
подробно разобраны, например, в [20].
86
Это доказано в Лемме 8 Приложения 2.
87
Убедитесь в этом.
88
Алгоритм получается рекуррентным и при каждом k нужно обращать матрицу Σk .
89
Эти примеры навеяны броуновским движением и броуновским мостом.

55
5.3 Разные распределения
В этом разделе мы затронем методы моделирования нескольких популярных распределений. Как
всегда, мы будем рассматривать лишь простые для реализации алгоритмы.

5.3.1 Показательное распределение


Стандартный метод моделирования распределения EXP(1) — это (модифицированный) метод
обратных функций, приводящий к моделирующей формуле ξ = − ln(α) (см. раздел 4.1.1).
Если положить d = 1, k = 1, k1 = k2 = 1 и µ = 1 во втором утверждении Предложения 16 (см.
раздел 7.2.3 Приложения 1), то можно получить метод моделирования, альтернативный методу
обратных функций. Действительно, в этом случае оказывается, что случайные величины ξ1 = ηα
и ξ2 = η(1−α) показательно распределены с параметром 1 и независимы, если только независимы
η ∈ Gamma(2, 1) и α ∈ U(0, 1).90 Поскольку случайная величина η может быть промоделирована
как − ln(α1 α1 ),91 то мы приходим к следующему алгоритму.

Моделирование показательного распределения расщеплением Gamma(2, 1)

Результат: (ξ1 , ξ2 ).
1. (Моделирование гамма-распределения) Get(α1 , α2 ); η ← − ln(α1 ∗ α2 );
2. (Результат) Get(α); ξ1 ← η ∗ α; ξ2 ← η − ξ1 ; STOP.

Ясно что приведенный алгоритм требует 3 обращения к генератору псевдослучайных чисел


и одно вычисление логарифма, но при этом выдает 2 независимых реализации показательно
распределенной случайной величины. Таким образом, на одну реализацию приходится 1.5 обра-
щений к генератору и 0.5 вычислений логарифма. Следовательно, описанный метод расщепления
Gamma(2, 1) будет иметь ме́ньшую трудоемкость, чем метод обратных функций, если обращение
к генератору стоит дешевле, чем вычисление логарифма. Конечно, использование другого мето-
да моделирования распределения Gamma(2, 1) может изменить упорядоченность трудоемкостей
этих методов.
Замечание 12. Легко представить себе обобщение приведенного метода, связанное с расщеплением слу-
чайной величины Gamma(n, 1) в сумму n независимых показательных случайных величин. Для этого
нужно использовать второе утверждение Предложения 16 с d = n − 1, k = n, k1 = . . . = kd+1 = 1 и µ = 1.
Кроме того, Замечание 17 раздела 7.2.4 Приложения 1 позволяет моделировать соответствующее рас-
пределение Дирихле как набор приращений n порядковых статистик, полученных из случайных величин
α1 , . . . , αn .
Если случайная величина η ∈ Gamma(n, 1) моделируется как − ln(α1 . . . αn ),92 то для получения одной
реализации распределения EXP(1) требуется 2 − 1/n обращений к генератору и одно вычисление лога-
рифма. Кроме того, нужно дополнительное время (и, возможно, дополнительная память) на упорядочи-
вание (и вычисление приращений) (n − 1)-ой реализации случайной величины, имеющей распределение
U(0, 1). Ясно, что при больших n этот метод может быть более трудоемким, чем метод обратных функ-
ций. Возможно, ситуация изменится, если гамма-распределение будет моделироваться более экономичным
образом.

Ряд других методов моделирования показательного распределения93 приведен в [10, гл. IX.2].

5.3.2 Степенное распределение


Метод обратных функций для моделирования степенного распределения с плотностью pγ (x) =
γxγ−1 при x ∈ (0, 1) и γ > 0 уже обсуждался в разделе 4.1.1. Этот метод порождает моделирую-
щую формулу ξ = α1/γ и поэтому его трудоемкость мало зависит от параметра γ. В то же время
она может оказаться достаточно большой для практики, так как возведение числа в веществен-
ную степень производится с помощью вычисления логарифма и экспоненты.
90
Таким образом, η «расщепляется» на 2 показательные независимые случайные величины.
91
См. Лемму 2 раздела 3.2.
92
Опять-таки Лемма 2 раздела 3.2.
93
Некоторые из них более эффективны, чем описанные выше.

56
При целых γ = n ≥ 1 существует естественная альтернатива методу обратных функций. Она
основана на том, что максимум из n независимых одинаково распределенных случайных величин,
имеющих функцию распределения F , распределен согласно функции распределения F n . Отсюда
сразу же видно, что случайная величина ξ = max(α1 , . . . , αn ) имеет степенное распределение с
параметром n.94 При небольших n этот способ может оказаться эффективнее метода обратных
функций.
В некоторых случаях имеет смысл использовать оператор извлечения квадратного корня, так
как он реализуется значительно быстрее, чем оператор возведения в вещественную степень.

5.3.3 Гамма-распределение
Плотность гамма-распределения Gamma(k, µ) с параметрами k, µ > 0 задается формулой

pk,µ (x) = µk xk−1 e−µx /Γ(k), x > 0.

Параметр µ является параметром масштаба: если η ∈ Gamma(k, 1), то ξ = η/µ ∈ Gamma(k, µ).95
Поэтому нам достаточно уметь моделировать гамма-распределение с µ = 1. Параметр k (так
называемый параметр формы) гораздо более важен. Многочисленные методы генерирования
гамма-распределения, адаптированные к различным (большим и маленьким) значениям k, можно
найти в [10, гл. IX.3]. Здесь мы ограничимся лишь несколькими простыми замечаниями.
Как уже отмечалось (см. Лемму 2 раздела 3.2), в частном случае целого k > 1 распределение
Gamma(k, 1) может быть промоделировано очень просто с помощью моделирующей формулы
ξ = − ln(α1 . . . αk ). При относительно небольших k это выглядит вполне приемлемо.96
Переход от целого к вещественному k > 1, в принципе, может быть осуществлен с помощью
следующего простого факта:97 если ξ1 ∈ Gamma(k1 , µ), ξ2 ∈ Gamma(k2 , µ) и ξ1 , ξ2 независимы,
то ξ1 + ξ2 ∈ Gamma(k1 + k2 , µ). Поэтому, используя разложение k = ⌊k⌋ + {k} и считая, что у
нас есть приемлемый метод моделирования гамма-распределения с целым параметром формы,
мы приходим к задаче моделирования распределения Gamma(k, 1) с k < 1.
Если k = 1/2, то ситуация достаточно проста, так как случайная величина ξ 2 /2 имеет рас-
пределение Gamma(1/2, 1) при ξ ∈ N(0, 1).98 Приведем один из легко реализуемых методов, при-
годных для любого k < 1. Заметим, что при x > 0
1 1 1 −x
pk (x) = pk,1 (x) = xk−1 e−x ≤ xk−1 1(0,1) (x) + e 1[1,∞) (x) =
Γ(k) Γ(k) Γ(k)
1 1
= kxk−1 1(0,1) (x) + e−(x−1) 1[1,∞) (x) = M (k)qk (x), (5.3.1)
kΓ(k) eΓ(k)
где
1 1
M (k) = +
kΓ(k) eΓ(k)
и

qk (x) = ρk kxk−1 1(0,1) (x) + (1 − ρk )e−(x−1) 1[1,∞) (x) (5.3.2)

c ρk = 1/(kΓ(k)M (k)) = e/(e + k). При этом равенство в (5.3.1) достигается как при x = 1 так и
при x ↑ 1. Ясно, что функция qk является плотностью некоторого распределения.
Отсюда сразу видна идея моделирования: можно использовать метод отбора с мажорирующим
распределением Qk , имеющим плотность qk , а само распределение Qk моделируется как смесь (с
весом ρk ) степенного распределения с параметром k и показательного распределения, сдвинутого
94
Заметим, что этот простой факт является частным случаем Следствия 6 (раздел 7.2.4 Приложения 1).
95
Проверьте!
96
Еще раз подчеркнем, что при больших k (не обязательно целых) нужно использовать более продвинутые
методы, трудоемкость которых не стремится к бесконечности при k → ∞.
97
Проверьте!
98
Проверьте! Кстати, если у нас есть быстрый метод моделирования нормального распределения, то нам доста-
точно научиться моделировать гамма-распределение с параметром k < 0.5.

57
на 1 вправо (с весом 1 − ρk ). Заметим также, что, так как kΓ(k) → 1 при k → 0, то функция M (k)
ограничена на промежутке (0, 1].
Поскольку при положительных x
 k−1 −x 

 x e /Γ(k)  1
 при 0 < x < 1,  e−x при 0 < x < 1,
p
def k (x) ρ k kxk−1 kΓ(k)ρ k
rk (x) = = = =
qk (x)   xk−1 e−x /Γ(k) 

1 k−1

 при x ≥ 1 x при x 1
(1 − ρk )e−(x−1) eΓ(k)(1 − ρk )
{
e−x при 0 < x < 1,
= M (k) ≤ M (k),
x k−1
при x ≥ 1

то при использовании метода отбора нужно с вероятностью ρk проверять неравенство e−η1 > α, а
с вероятностью 1−ρk — неравенство η2k−1 > α, где η1 имеет степенное распределение с параметром
k, а η2 − 1 — распределение EXP(1). Тем самым мы приходим к следующему алгоритму.99

Моделирование распределения Gamma(k, 1) при k < 1 методом отбора с мажорирующим


распределением (5.3.2).

Входные данные: k ∈ (0, 1).


Результат: ξ.
1. (Пересчет параметров) ρ ← e/(e + k); a ← 1/k; d ← ρ/(1 − ρ);
2. (Отбор)
• Do
⋄ Get(α1 , α2 ); β ← α1 /ρ;
( )
⋄ If β < 1 then η ← β ∧ a else η ← − ln d ∗ (β − 1) ;
• While (η < 1 and exp(−η) < α2 ) or (η ≥ 1 and η ∧ (k − 1) < α2 );
3. (Результат) ξ ← η; STOP.

Отметим, что в приведенном алгоритме использован результат Предложения 2 раздела 2.4,


позволяющий при моделировании смеси распределений сэкономить одно обращение к генератору.
Кроме этого, сделаны некоторые простые преобразования.100
Функция M (k) принимает максимальное значение ≈ 1.39 при k ≈ 0.8. В то же время M (k) → 1
при k → 0, M (1/2) ≈ 1.34 и M (1) = 1 + 1/e ≈ 1.37. Таким образом, метод оказывается наименее
трудоемким при k, близких к нулю.101

5.3.4 Бета-распределение
Бета-распределение Beta(k1 , k2 ) с параметрами k1 , k2 > 0 определяется плотностью
Γ(k1 + k2 ) k1 −1
pk1 ,k2 (x) = x (1 − x)k2 −1 ,
Γ(k1 )Γ(k2 )
сосредоточенной на множестве (0, 1). Как отмечено в разделе 7.2.3 Приложения 1, бета-распреде-
ление является частным случаем распределения Дирихле.
Рассмотрим сначала некоторые частные случаи параметров k1 , k2 . Ясно, что распределе-
ние Beta(1, 1) является равномерным на (0, 1). При k2 = 1 мы получаем степенное распреде-
ление с параметром m = k1 , моделирование которого обсуждалось в разделе 5.3.2.102 Кроме
того, бета-распределение обладает следующим очевидным свойством: если ξ ∈ Beta(k1 , k2 ), то
1 − ξ ∈ Beta(k2 , k1 ). Отсюда сразу же следует метод моделирования распределения Beta(1, k2 ).
99
Алгоритм Аренса и Дитера, см. [21], а также [10, стр. 425].
100
Эти преобразования можно продолжить. Например, вместо проверки неравенства exp(−η) < α2 можно про-
верять эквивалентное неравенство η > − ln(α2 ). Кроме того, можно применить отбор с ограничениями и т.д.
101
Например, M (0.1) ≈ 1.09.
102
А если k2 & 1, то степенное распределение с параметром k1 можно использовать в качестве мажорирующего
для метода отбора.

58
Если числа k1 , k2 — целые, то из Следствия 6 (раздел 7.2.4 Приложения 1) можно вывести
следующий способ моделирования распределения Beta(k1 , k2 ). Согласно утверждению этого след-
(n)
ствия, порядковая статистика α[k] , построенная по выборке α1 , . . . , αn , имеет бета-распределение
с параметрами k, n − k + 1. Поэтому, если положить n = k1 + k2 − 1, то случайная величина
(n)
α[k1 ] будет иметь нужное нам распределение. При небольших (целых) k1 , k2 этот способ может
оказаться приемлемым.
Обсудим теперь общий случай. Существует большое число алгоритмов, достаточно эффектив-
ных либо для произвольных параметров k1 , k2 , либо для ситуации, когда на эти параметры нало-
жены ограничения.103 Достаточно полный обзор таких методов можно найти в [10, гл. IX.4]. Мы
же здесь ограничимся одним простым для реализации методом, который является вполне конку-
рентоспособным, если только уже имеется хороший способ моделирования гамма-распределения
с произвольными параметрами.
А именно, если положить d = 1 в Предложении 16 (раздел 7.2.3 Приложения 1), то окажется,
что случайная величина η1 /(η1 + η2 ) имеет бета-распределение с параметрами k1 , k2 при усло-
вии, что случайные величины η1 , η2 независимы и имеют гамма-распределения Gamma(k1 , 1) и
Gamma(k2 , 1) соответственно. Этот прием представляется универсальным, хотя и не всегда менее
трудоемким, чем более изощренные методы.104

103
Например, есть алгоритмы, специально приспособленные для случаев k1 = k2 , min(k1 , k2 ) < 1, max(k1 , k2 ) > 1
и т.д.
104
Все зависит от того, насколько быстро мы умеем моделировать гамма-распределения с нужными параметрами
формы.

59
6 О моделировании с дискретным источником случайности
Материал этого раздела выходит за рамки традиционного моделирования, описанного во Введе-
нии, и, вообще говоря, может быть опущен при чтении.
Говоря в предыдущих разделах о моделирования различных распределений, мы под трудоемкостью
алгоритмов понимали (среднее) число основных операций, необходимых для получения одной реализа-
ции случайной величины или случайного вектора. При этом предполагалось, что источником случайности
является последовательность α1 , . . . , αn , . . . независимых случайных величин, имеющих равномерное рас-
пределение на интервале (0, 1].105
На самом деле, однако, генераторы псевдослучайных чисел порождают, как правило, последователь-
ность чисел a1 , . . . , an , . . . таких, что для некоторого M > 1 выполняются равенства ai = xi /M , где
xi ∈ {0, . . . , M − 1}.106 Тем самым предположение о том, что случайные величины αi принимают веще-
ственные (а не рациональные) значения оказывается неверным и может служить источником ошибок.
С этой точки зрения более естественным является предположение, что источником случайности явля-
ется последовательность независимых случайных величин ε1 , . . . , εn , . . ., каждая из которых равномерно
распределена на множестве {0, . . . , M − 1}.
Оказывается, что если ограничиваться моделированием дискретных распределений,107 то такой под-
ход дает возможность описывать оптимальные (в смысле среднего числа обращений к генератору) методы
и алгоритмы моделирования. Более того, эти результаты могут быть полезны и для традиционного моде-
лирования.
Начнем с некоторых общих положений.108

6.1 Корневые диаграммы и сложность моделирования


Рассмотрим задачу моделирования дискретного распределения P, сосредоточенного на множестве X =
{x1 , . . . , xN } и заданного таблицей распределения
( )
x1 . . . xk . . . xN
P: , (6.1.1)
p 1 . . . pk . . . pN
предполагая, что источником случайности является последовательность независимых случайных величин
{εi }i≥1 , каждая из которых имеет распределение
( )
0 ... k ... M − 1
Q: (6.1.2)
q0 . . . qk . . . qM −1
с некоторыми вероятностями qi . Для простоты записи числа N и M считаются конечными, хотя некоторые
из дальнейших рассуждений верны и для случая, когда N и/или M бесконечны.
Традиционно считается, что такая постановка задачи восходит к [22], где обсуждается случай M =
N = 2, p1 = p2 = 1/2 и q2 = q ∈ (0, 1), то есть рассматривается моделирование симметричных испытаний
Бернулли с помощью несимметричных.109
Нас будет интересовать конструирование и исследование алгоритмов моделирования в достаточной
мере произвольных распределений (6.1.1) в случае, когда распределение (6.1.2) является простым и уни-
версальным. Здесь можно выделить статью [11], где обсуждается оптимальное моделирование распреде-
ления P с помощью случайных битов, то есть в том случае, когда распределение Q представляет собой
симметричное распределение Бернулли. Соответствующие алгоритмы опубликованы в [23] и [24].
Как правило, в общем случае моделирование распределения (6.1.1) с помощью независимых случай-
ных величин εi , имеющих распределение (6.1.2), производится методом корневых диаграмм. Корневая
диаграмма описывается набором D цепочек (i1 , . . . , ir ) с iℓ ∈ {0, . . . , M − 1}, удовлетворяющих условию
префикса: если (i1 , . . . , ir ) ∈ D, то (i1 , . . . , ir , j1 , . . . , jm ) ∈/ D при любых m ≥ 1 и j1 , . . . , jm ∈ {0, . . . , M − 1}.
Кроме того, предполагается, что

qi1 . . . qir = 1. (6.1.3)
(i1 ,...,ir )∈D

105
Кроме того, предполагалось, что все математические операции над числами производятся абсолютно точно.
Мы сейчас не обращаем внимание на последнее обстоятельство.
106
Иногда ai имеют вид (bxi + c)/M . Для нашего анализа это не является принципиальным.
107
Для перехода к теоретически непрерывным распределениям нужно учитывать представление чисел с плава-
ющей точкой. Мы здесь не будем этим заниматься.
108
Изложение ведется на основе статьи [27].
109
Решение этой задачи очень простое: если {εi , i ≥ 1} — последовательность независимых случайных величин
с распределением Ber(q), то нужно положить τ = min{i : ε2i−1 ̸= ε2i } и взять ξ = ε2τ . Обоснуйте эту процедуру.
Что можно сказать о ее трудоемкости?

60
В этом случае мы будем говорить, что корневая диаграмма D согласована с распределением Q и будем
обозначать ее D = D(Q).
Наконец, пусть корневая диаграмма D(Q) связана с распределением P при помощи отображения
f : D 7→ X такого, что для любого xℓ ∈ X

qi1 . . . qir = pℓ (6.1.4)
f −1 ({xℓ })

(конечно, (6.1.3) следует из (6.1.4)). Тогда употребляется термин корневая диаграмма D(P, Q, f ), порож-
дающая распределение P.
Положим теперь

τ = min{n : (ε1 , . . . , εn ) ∈ D}. (6.1.5)

Тогда, очевидно, (6.1.3) означает, что τ конечно почти всюду, равенство (6.1.4) переписывается в виде
P(f (ε1 , . . . , ετ ) = xℓ ) = pℓ , и общая схема моделирования распределения P выглядит следующим образом:
ищется наименьшее n такое, что (ε1 , . . . , εn ) ∈ D и полагается ξ = f (ε1 , . . . , εn ).

Пример. Рассмотрим простейший случай M = N = 2, q0 = q1 = 1/2, x1 = 0, x2 = 1, p1 = 1/3 и


p2 = 2/3. Тогда в качестве корневой диаграммы можно выбрать множество D, состоящее из элементов
(1), (01), (001), . . . Очевидно, равенство (6.1.3) при этом будет выполняться. Отображение f : D 7→ {0, 1}
определим следующим образом: если цепочка (0 . . . 01), входящая в D, имеет четное число нулей, то зна-
чение f на этой цепочке равно 1, иначе это значение равно нулю. Поскольку

∑ ∞

1/3 = 2−2j , а 2/3 = 2−2j+1 ,
j=1 j=1

то (6.1.4) тоже выполняется. Моделирующая процедура здесь очень простая: проводятся симметричные
испытания Бернулли до первого успеха, если он наступает на нечетном испытании, то моделируемой
случайной величине присваивается значение 1, если на четном — то 0.110
Вернемся к общему случаю и будем интерпретировать случайные величины εi как результаты обра-
щения к некоторому генератору случайных чисел, распределенных согласно (6.1.2).
Естественной характеристикой трудоемкости описанного выше метода моделирования является вели-
чина Eτ — среднее число случайных величин εj , необходимое для получения одной реализации случайной
величины ξ. Иначе говоря, при моделировании распределения P согласно корневой диаграмме D(P, Q, f ),
величина Eτ — это просто среднее число обращений к генератору.
Точное выражение для Eτ хорошо известно в теории информации (например, [26, гл. 1 §4]). Для
того, чтобы доказать соответствующий результат вероятностными методами, остановимся сначала на так
называемом тождестве Вальда.
Лемма 5. Пусть ξ1 , . . . , ξn , . . . — последовательность независимых случайных величин, имеющих мате-
матическое ожидание a и таких, что E|ξi | ≤ b < ∞ для всех i. Положим Sn = ξ1 + . . . + ξn . Рассмотрим
случайную величину τ с конечным математическим ожиданием, принимающую целые положительные
значения и такую, что для любого i ≥ 1 случайная величина ξi и событие τ ≥ i независимы. Тогда у
случайной величины Sτ существует математическое ожидание, причем ESτ = aEτ.
Доказательство. Заметим, что
∑ ∑ ∑ ∑∑
b Eτ = b P(τ ≥ i) ≥ E|ξi | P(τ ≥ i) = E(|ξi |, τ ≥ i) = E(|ξi |, τ = n) =
i≥1 i≥1 i≥1 i≥1 n≥i
∑∑
n ∑ ∑
= E(|ξi |, τ = n) = E(|ξ1 | + . . . + |ξn |, τ = n) ≥ E(|Sn |, τ = n) = E|Sτ |. (6.1.6)
n≥1 i=1 n≥1 n≥1

Следовательно, E|Sτ | < ∞. Теперь, повторяя все преобразования (6.1.6) с заменой b на a, |ξi | на ξi ,
неравенств на равенства, |Sn | на∑Sn , ∑
и пользуясь тем что (как уже доказано), можно менять порядок
суммирования в двойной сумме i≥1 n≥i , мы получим требуемый результат.

Замечание 13. 1. Если случайные величины ξi одинаково распределены (или, например, если они неот-
рицательны), то условие E|ξi | ≤ b < ∞ выполнено автоматически.
2. Если случайные величины ξi неотрицательны, а Eτ = ∞, то равенство ESτ = aEτ все равно имеет
место в том смысле, что ESτ = ∞. Это снова следует из (6.1.6).
110
Этот и другие подобные примеры подробно разобраны в [11].

61
Для того, чтобы получить выражение для Eτ , где τ определено в (6.1.5), нам понадобится понятие
энтропии дискретного распределения.111

Определение 1. Пусть K > 1. Рассмотрим дискретное∑ распределение R с вероятностями ri ≥ 0, где


i пробегает конечное или счетное число значений и i ri = 1. Энтропией HK (R) распределения R по
основанию K называется число

HK (R) = − ri logK ri , (6.1.7)
i

через logK обозначен логарифм по основанию K и предполагается, что x logK (x) = 0 при x = 0.

Заметим, что носитель распределения R в определении не участвует. Конечно, энтропии одного и того
же распределения по различным основаниям отличаются только множителями. Кроме того, энтропия
распределения с конечным носителем конечна, а если носитель распределения R бесконечен, то энтропия
HK (R) тоже может оказаться бесконечной.
Нам понадобятся следующие свойства энтропии.

Лемма 6. 1. Для распределения (6.1.2) с конечным M имеет место неравенство HK (Q) ≤ logK (M ). Тем
самым при фиксированном M максимальная энтропия достигается на распределении Q с qi = 1/M .
2. Задав разбиение
∑ множества индексов I вероятностей ri на непересекающиеся подмножества Ij и
положив sj = i∈Ij ri , мы получим новое распределению S. Соотношение между энтропиями распре-
делений R и S задается равенствами HK (R) ≥ HK (S).

Доказательство. 1. Рассмотрим случайную величину ξ, принимающую значения 1/qi с вероятностями


qi . Очевидно, Eξ = M и E logK (ξ) = HK (Q). Так как функция logK является выпуклой вверх, то по
неравенству Йенсена E logK (ξ) ≤ logK (Eξ).
2. Утверждение следует из цепочки преобразований
∑ ∑∑ ( ) ∑∑ ∑∑
ri logK ri = ri logK (ri /sj ) + logK (sj ) = ri logK (sj ) + ri logK (ri /sj ) ≤
i j i∈Ij j i∈Ij j i∈Ij
∑∑ ∑
≤ ri logK (sj ) = sj logK (sj ).
j i∈Ij j

Доказательство окончено.

Вернемся к математическому ожиданию случайной величины (6.1.5).

Предложение 12. Рассмотрим распределение QD , имеющее носитель D и такое, что


( )
QD (i1 . . . in ) = qi1 . . . qin .

Тогда для любого K > 1


( )
HK QD = Eτ HK (Q). (6.1.8)

Доказательство. Обозначим ηi = − logK (qεi ). Конечно, случайные величины ηi положительны, незави-


симы и одинаково распределены. Кроме того, заметим, что

{τ ≥ i} = {ε1 ∈
/ D, (ε1 , ε2 ) ∈
/ D, . . . , (ε1 , . . . , εi−1 ) ∈
/ D}.

Поэтому событие {τ ≥ i} и случайная величина ηi независимы. Далее,



Eηi = − qi logK (qi ) = HK (Q) < ∞,
i

так как M < ∞. Следовательно, мы можем применить утверждение Леммы 5 (а также Замечание 13 в
случае Eτ = ∞) и получить равенство(ESτ) = Eτ HK (Q), где Sn = η1 + . . . + ηn .
Осталось доказать, что ESτ = HK QD . Действительно, если обозначить Dn подмножество D, состо-
ящее из цепочек (i1 , . . . , in ) длины n, то окажется, что
( ) ∑ ∑
H K QD = − qi1 . . . qin logK (qi1 . . . qin ). (6.1.9)
n≥1 (i1 ,...,in )∈Dn

111
Понятие энтропии широко используется в теории информации (см., например, [25] или [26]). Здесь мы огра-
ничиваемся лишь теми свойствами энтропии, которые нам необходимы.

62
С другой стороны, так как ввиду условия префикса {τ = n} = {(ε1 , . . . , εn ) ∈ Dn }, то
∑ ( ) ∑ ( )
ESτ = E Sn , τ = n = − E logK (ε1 . . . εn ), (ε1 , . . . , εn ) ∈ Dn ,
n≥1 n≥1

что в точности совпадает с правой частью (6.1.9).

Следствие 5. В условиях Предложения 12 имеет место неравенство112 Eτ ≥ HK (P)/ logK (M ).


( )
Доказательство. Согласно Лемме 6, HK (Q) ≤ logK M , а HK QD ≥ HK (P). Отсюда и из (6.1.8) сразу
же следует требуемое.

6.2 Оптимальные DM (P, f )-диаграммы


Итак, пусть у нас имеется бесконечная последовательность независимых одинаково распределенных слу-
чайных величин εi , принимающих с равной вероятностью значения 0, 1, . . . , M − 1 при некотором M > 1.
В дальнейшем члены этой последовательности будем называть случайными M -битами.
Рассмотрим некоторую корневую диаграмму DM (P, f ), порождающую распределение P, и обозначим

tℓ (m) = card {(i1 , . . . , im ) : f ((i1 , . . . , im )) = xℓ }.



Тогда условие (6.1.4) превратится в равенство m≥1 tℓ (m)/M m = pℓ .
Введем при x ∈ (0, 1) функции ∑{ }
ν (M ) (x) = M m x /M m
m≥ 0
{ }
(здесь z обозначает дробную часть числа z) и em (x) = ⌊M m x⌋ (mod M ), так что

x= em (x)M −m .
m≥1

Пусть, наконец, ξ = f (ε1 , . . . , ετ ).


Предложение 13. 1. Для любой корневой DM (P, f )-диаграммы и любого m ≥ 0 имеет место неравен-
ство
∑{ }
P(τ > m) ≥ M m pℓ /M m . (6.2.1)

2. Равенства в (6.2.1) достигаются тогда и только тогда, когда tℓ (m) = em (pℓ ) для всех m и ℓ, при
этом

Eτ = ν(pℓ ). (6.2.2)

( ) ∑
Доказательство. 1. Очевидно, P τ ≤ m, ξ = xℓ = 1≤k≤m tℓ (k)/M k ≤ pℓ , что эквивалентно неравенству

M m−k tℓ (k) ≤ ⌊M m pℓ ⌋,
1≤k≤m

так как сумма в его левой части есть целое число. Отсюда сразу же получаем, что
( ) ∑ ( ) ∑( ( ))
P τ >m = P τ > m, ξ = xℓ = pℓ − P τ ≤ m, ξ = xℓ ≥
ℓ ℓ
∑ ∑
≥ (pℓ − ⌊M pℓ ⌋/M ) =
m m
{M m pℓ }/M m .
ℓ ℓ

2. Если в (6.2.1) достигаются равенства, то



tℓ (m) + M M m−k−1 tℓ (k) = ⌊M m pℓ ⌋
1≤k<m

для всех ℓ, m. Следовательно, tℓ (m) = ⌊M m pℓ ⌋ (mod M ) = em (pℓ ).


Обратное ∑ утверждение очевидно. Представление (6.2.2) следует из определения функции ν(x) и ра-
венства Eτ = m≥0 P(τ > m).
112
Это неравенство носит в теории информации название обратного неравенства Шеннона для кодирования ка-
нала без помех.

63
Замечание 14. Результат Предложения 13 показывает, что выбор tℓ (m) = em (pℓ ) обеспечивает не только
минимальное среднее число обращений к генератору, но одновременно и минимальные значения вероят-
ностей P(τ > m) при всех m ≥ 1. В частности, при этом достигается максимум вероятности P(τ = 1),
который равен
( ) ∑
max P τ = 1 = ⌊M pℓ ⌋/M. (6.2.3)
DM (P,f )

Предложение 14. Минимальное значение Eτ удовлетворяет неравенствам


( )
max 1, HM (P) ≤ min Eτ < HM (P) + M/(M − 1). (6.2.4)
DM (P,f )

Доказательство. Левое неравенство уже обсуждалось в разделе 6.1. Для доказательства правого нера-
венства заметим, что

ν(x) = kek (x)M −k
k≥1

при x ∈ (0, 1), и определим функцию HM (x) равенством HM (x) = −x logM (x). Ввиду (6.2.2) достаточно
показать, что ν(x) < HM (x) + xM/(M − 1).
Для x ∈ (0, 1) найдем такие целые m > 0 и 1 ≤ j < M , что ⌊xM m ⌋ = j. Тогда
∑ ( )
HM (x) + xM/(M − 1) − ν(x) = ek (x)M −k − logM (x) + M/(M − 1) − k ≥
k≥1
( ) ∑ ( )
−m
≥ jM M/(M −1)−logM (j +1) + ek (x)M −k m−k+M/(M −1)−logM (j +1) . (6.2.5)
k>m

Так как M > j ≥ 1, то 0 < M/(M − 1) − logM (j + 1) < 1, и поэтому первое слагаемое в правой части (6.2.5)
положительно, а остальные — отрицательны. Следовательно,
( )
HM (x) + xM/(M − 1) − ν(x) > jM −m M/(M − 1) − logM (j + 1) +
∑ ( ) ∑
+ (M − 1)M −k M/(M −1)−logM (j +1) − (M − 1)M −k (k − m) =
k>m k>m
( ( ) )
−m
=M (j + 1) M/(M − 1) − logM (j + 1) − M/(M − 1) .

Для окончания доказательства осталось заметить, что y (z/(z − 1) − logz y) ≥ z/(z − 1) при z ∈ (1, +∞) и
y ∈ (1, z].

Замечание 15. Из (6.2.4) следует что Eτ → 1 при M → ∞ для любого фиксированного распределения
P с конечной энтропией.
Таким образом, для любого M > 1 и любого дискретного распределения P существует оптимальная
корневая диаграмма DM (P, f ), доставляющая минимум среднему числу обращений к генератору при
моделировании распределения P с помощью M -битов.
Следующей задачей является построение алгоритмических схем для оптимального M -битового моде-
лирования дискретных распределений. Такие алгоритмы можно найти в [27], однако они, вообще говоря,
слишком сложны, не имеют практической ценности и поэтому здесь не приводятся.
Вместо этого мы обсудим применение полученных результатом к традиционному моделированию.

6.3 Связь с традиционным моделированием


Многие традиционные методы моделирования дискретных случайных величин используют преобразова-
ние вида ξ = f (α), где α — случайная величина, равномерно распределенная на [0, 1], а f — специальным
образом подобранная функция. Например, для моделирования равномерного распределения на множе-
стве {1, . . . , N } используют моделирующую формулу ξ = ⌈N α⌉, а для геометрического распределения с
параметром p ∈ (0, 1) — преобразование ξ = ⌊ln(α)/ln(1 − p)⌋ .
В общем случае этим свойством обладают все методы обратных функций, которые являются теоре-
тически точными, если, в частности, α бесконечное число двоичных разрядов. Как уже говорилось, на
практике это не так, и моделирование с помощью метода обратных функций, вообще говоря, приводит к
погрешностям.
Попробуем описать ситуации, когда такие погрешности могут оказаться существенными. Предполагая,
что источником случайности является последовательность случайных M -битов, мы можем для этого
разными способами использовать результаты раздела 6.2.

64
Во-первых, как следует из неравенств (6.2.4), дискретное распределение P с большой (намного боль-
шей единицы) M -энтропией HM (P) заведомо требует большого числа обращений к генератору даже при
оптимальном моделировании. Соответствующий пример с геометрическим распределением уже разобран
в разделе 3.3. Эти соображения, однако, не работают, если энтропия HM (P) лишь немного превышает 1.
Можно действовать и по-другому. Действительно, формула (6.2.3) позволяет сосчитать вероятность
того, что при оптимального моделировании распределения (6.1.1) потребуется ровно одно обращение к
генератору. Если эта вероятность окажется существенно меньше 1, то любой метод моделирования рас-
пределения (6.1.1), использующий ровно одно обращение к генератору, будет неточным.
Приведем примеры этого подхода для равномерного на множестве {1, . . . , N } и геометрического рас-
пределений. В первом случае
( )
πmax (1) = max P τ = 1 = Λ⌊Λ−1 ⌋
def

с Λ = N/M , что равно нулю при N > M . При N ≤ M ситуация другая. Например, при типичном выборе
M = 232 для N = 2k ≤ 232 требуется ровно одно обращение к генератору, в то время как при N = 2k + j
с 1 ≤ j < 2k

πmax (1) = 1 − 2−32+k + j2−k − j2−32 ,

что дает πmax (1) ≈ 1 − 2−32+k при маленьких j и больших k. Тем самым случай N , близких к M , требует
внимательности и осторожности.

Таблица 1: Вероятности одного обращения к генератору. Геометрическое распределение.

d k
16 9 10 11 12 13 14 15
32 25 26 27 28 29 30 31
64 57 58 59 60 61 62 63
πmax (1) 0.97 0.95 0.92 0.86 0.75 0.59 0.35

Что касается геометрического распределения, то удобное для теоретического анализа представление


правой части (6.2.3), вообще говоря, отсутствует. В Таблице 1 приведены результаты компьютерных вы-
числений вероятности πmax (1) для M = 2d и различных p вида 2−k .
Как и следовало ожидать, при k, близких к d, алгоритмы, использующие ровно одно обращение к
генератору псевдослучайных чисел, будут весьма неточными.
Приближенное равенство чисел πmax (1) в Таблице 1 при разных d, k с одинаковой разностью d − k
объясняется тем, что при маленьких p число тех значений j, при которых ⌊M p(1 − p)j ⌋ = n > 0, примерно
равно ln(1 + 1/n)/p .

Замечание 16. Если для какого-то распределения P оказалось, что число πmax (1) близко к единице, это
еще не означает, что любой теоретически точный (в смысле Введения) алгоритм моделирования распре-
деления P не приведет к серьезным ошибкам при использовании ε вместо α в моделирующей формуле
одной переменной. Это означает лишь, что такие алгоритмы существуют.
Впрочем, многодесятилетняя мировая практика показывает, что использование хорошо опробованных
методов для моделирования «разумных» распределений делает такие опасения напрасными.

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

7.1 Общее утверждение


Предложение 15. Пусть ξ¯ ∈ Rd — d-мерный случайный вектор, обладающий распределением
Pξ и плотностью распределения pξ , причем Pξ (D) = 1 для некоторого измеримого D ⊂ Rd .
Рассмотрим измеримое отображение ϕ : D 7→ Rd и предположим, что при i = 1, . . . , n су-
ществуют открытые попарно непересекающиеся подмножества Di ⊂ Rd , удовлетворяющие
следующим условиям.
1. Множества D и ∪ni=1 Di совпадают Pξ -почти всюду.
2. Обозначим ϕi = ϕ|Di , ϕ(Di ) = ϕi (Di ) = Gi и предположим, что при любом i отображение
ϕi : Di 7→ Gi
• является биекцией с ψi = ϕ−1
i ;
• непрерывно дифференцируемо с det ψi′ ̸= 0 в Gi .
¯ обладает плотностью pη (Y ) и
Тогда случайный вектор η̄ = ϕ(ξ)
∑ ( )
pη (Y ) = pξ ψi (Y ) det ψi′ (Y ) IGi (Y ). (7.1.1)
i
Доказательство.
∑ ∑
¯ ∈ A) =
P(η̄ ∈ A) = P(ϕ(ξ) ¯ ∈ A, ξ¯ ∈ Di ) =
P(ϕ(ξ) ¯ ∈ A ∩ Gi , ξ¯ ∈ Di ) =
P(ϕi (ξ)
i i
∑ ∑ ∫
= ¯ ∈ A ∩ Gi ) =
P(ϕi (ξ) pξ (X)dX =
i i
{x: ϕi (x)∈A∩Gi }
∑ ∫ ( )
∫ ∑
( )
= pξ ψi (Y ) det ψi′ (Y ) dY = pξ ψi (Y ) det ψi′ (Y ) IGi (Y ) dY,
i A∩G A i
i

что и требовалось доказать.

7.2 Частные случаи, полезные для моделирования


Перейдем теперь к примерам применения Предложения 15.

7.2.1 Афинные преобразования


Общая формула. В условиях Предложения 15 возьмем n = 1 и при X ∈ Rd положим ϕ(X) =
AX + b, где A — невырожденная d × d матрица и b ∈ Rd . Тогда ψ(Y ) = A−1 (Y − b) и (7.1.1)
превращается в
pη (Y ) = | det A|−1 pξ (A−1 (Y − b)). (7.2.1)
Например, если случайный вектор ξ = (ξ1 , . . . , xd )T имеет плотность распределения pξ (x1 , . . . , xd )
и нас интересует совместное распределение случайных величин η1 = ξ1 , ηj = ξj −ξj−1 , j = 2, . . . , d,
то соответствующее отображение ϕ является линейным невырожденным с определителем, рав-
ным 1,113 а обратное отображение ψ определятся равенствами xi = y1 + . . . + yi , i = 1, . . . , d.
Поэтому
pη (y1 , . . . , yd ) = pξ (y1 , y1 + y1 , . . . , y1 + . . . + yd ). (7.2.2)
113
Проверьте!

66
Одномерный случай. В случае d = 1 афинное отображение ψ определяется равенством
ψ(x) = ax + b, условие невырожденности выглядит как a ̸= 0 и формула (7.2.1) приобретает
хорошо известный вид
1
pη (y) = pξ ((y − b)/a). (7.2.3)
|a|
С точки зрения моделирования это означает, что генерирование одномерного распределения с
плотностью (7.2.3) не представляет труда, если только мы умеем получать реализации случайной
величины ξ с плотностью распределения pξ : в этом случае достаточно положить η = aξ + b.
Таких примеров много. Например, если нам нужно промоделировать распределение EXP(µ),
то достаточно уметь моделировать случайную величину η ∈ EXP(1), а потом сделать преоб-
разование ξ = η/µ. Другой стандартный пример: для моделирования любого распределения из
параметрического семейства {N(a, σ 2 ), a ∈ R, σ > 0} достаточно промоделировать η ∈ N(0, 1), а
затем сделать преобразование ξ = ση + a (или ξ = −ση + a).

Равномерное распределение в областях. Пусть случайный вектор ξ¯ равномерно распре-


делено в d-мерной области D (конечно, предполагается, что 0 < mesd (D) < ∞). Иначе говоря,
пусть pξ (X) = c ID (X), где c = 1/mesd (D).
Обозначим G = AD + b — образ D при невырожденном преобразовании θ(X) = AX + b. Тогда,
так как A−1 (Y − b) ∈ D тогда и только тогда, когда Y ∈ G, то (7.2.1) приобретает вид

pη (Y ) = c| det A|−1 I G (Y ).

Таким образом, случайный вектор η̄ равномерно распределен в образе G множества D.

Ортонормированные линейные преобразования. Пусть ξ ∈ Rd — случайный вектор с


плотностью распределения pξ , которая имеет вид
(√ )
pξ (X) = f (∥X∥) = f X T X , X = (x1 , . . . , xd )T .

Если A : Rd 7→ Rd — ортонормированная матрица и η = Aξ, то | det A| = 1, AT = A−1 , и по


формуле (7.2.1)
(√ )
pη (Y ) = f Y T AAT Y = f (∥Y ∥).

Значит, L(ξ) = L(Aξ).


Обозначим теперь r = ∥ξ∥ и υ = ξ/r.114 Тогда ∥υ∥ = 1, ξ = rυ и (поскольку ортонормированное
отображение сохраняет длины векторов) Aξ = rAυ. Поэтому115 L(υ) = L(Aυ).
Следовательно, распределение случайного вектора υ, лежащего на единичной d-мерной сфере
с центром в нуле, инвариантно относительно любых ортонормированных преобразований этого
вектора. Значит, L(υ) является равномерным распределением на этой сфере.

7.2.2 Переход к полярным и сферическим координатам


Полярные координаты. Каждая точка X = (x, y)T ∈ R2 \ {0} может быть однозначно пред-
ставлена в виде X = ∥X∥ e, где ∥e∥ = 1. Полагая s = ∥X∥ и e = (cos t, sin t)T , где t ∈ [0, 2π),
получаем биекцию ϕ : (x, y)T 7→ (s, t)T , действующую из R2 \ {0} в (0, ∞) × [0, 2π). Конеч-
но, переменные (s, t) являются полярными координатами вектора X, а обратное отображение
ψ : (0, ∞) × [0, 2π) 7→ R2 \ {0} имеет вид x = s cos t, y = s sin t с якобианом det ψ ′ (s, t) = s.
Если теперь рассмотреть случайный вектор ξ ∈ R2 с плотностью распределения pξ (x, y) и
обозначить r, φ (случайные) полярные координаты этого вектора, то, так как в этом случае n = 1,
мы получим из (7.1.1), что

pr,φ (s, t) = spξ (s cos t, s sin t)1(0,∞)×[0,2π) (s, t). (7.2.4)


114
Поскольку P(r = 0) = 0, то эта операция корректна.
115
Почему?

67
Выражение (7.2.4) (выглядит
√ )особенно просто, если существует такая функция f : (0, ∞) 7→
(0, ∞), что pξ (x, y) = f x2 + y 2 . В этом случае, очевидно,

1
pr,φ (s, t) = sf (s) I(0,∞)×[0,2π) (s, t) = 2πsf (s) I(0,∞) (s) I (t). (7.2.5)
2π [0,2π)
Это значит, что случайные величины r и φ независимы, φ ∈ U(0, 2π), а r имеет плотность рас-
пределения pr (s) = 2πsf (s), s > 0.
Примеры.
1. Стандартным примером является равномерное распределение в единичном круге с центром в нуле,
где f (s) = I(0,1) (s)/π и полярный радиус имеет плотность распределения pr (s) = 2sI(0,1) (s).
2. Другой стандартный пример — совместное распределение двух независимых N(0, 1)-распределенных
случайных величин, где
1 −(x2 +y2 )/2
p(x, y) = e ,

f (s) = e−s /2 /2π, и плотность распределения полярного радиуса — это плотность распределения
2

Рэлея, то есть pr (s) = se−s /2 при s > 0.


2

Понятно, как можно использовать подобного рода факты для моделирования: поскольку по-
лярный радиус и полярный угол независимы, то их можно моделировать отдельно, а потом пе-
реходить обратно в евклидову систему координат, причем сложности могут возникнуть только
при моделировании распределения полярного радиуса.

Сферические координаты и равномерное распределение на сфере. Аналогично по-


лярным координатам на плоскости, каждый ненулевой вектор X = (x, y, z)T ∈ R3 может быть
однозначно представлен в виде X = ∥X∥ e, где
( )T
e = cos(t) cos(u), sin(t) cos(u), sin(u) , t ∈ [0, 2π), u ∈ [−π/2, π/2].

Это, конечно, соответствует переходу от евклидовой системы координат (x, y, z) к сферической


системе (s, t, u) со сферическим радиусом s = ∥X∥, долготой s и широтой u. Хорошо известно,
что якобиан обратного отображения равен s2 cos(u).
Поэтому, если случайный вектор ξ = (ξ1 , ξ2 , ξ3 )T имеет плотность распределения pξ (x, y, z), то
сферические координаты r, φ, θ этого вектора имеют совместную плотность
( )
pr,φ,θ (s, t, u) = pξ s cos(t) cos(u), s sin(t) cos(u), s sin(u) s2 cos(u), (7.2.6)

сосредоточенную в области (0, ∞) × [0, 2π) × (−π/2, π/2). В случае, когда


(√ )
pξ (x, y, z) = f x2 + y 2 + z 2 , (7.2.7)

равенство (7.2.6) приобретает вид

1 cos(u)
pr,φ,θ (s, t, u) = 4π s2 f (s2 )I(0,∞) (s) I(0,2π) (t) I(−π/2,π/2) (u) .
2π 2
Таким образом, случайные величины r, φ и θ оказываются независимыми, причем долгота φ
равномерно распределена на (0, 2π), плотность pr (s) распределения r равна 4π s2 f (s2 ), а плот-
ность pθ (u) распределения широты θ сосредоточена на (−π/2, π/2) и равна на этом интервале
0.5 cos(u).
Например, если ξ = (ξ1 , ξ2 , ξ3 )T — случайный вектор с независимыми N(0, 1)-распределенными коор-
динатами, то его плотность распределения равна (2π)−3/2 e−(x +y +z )/2 , и длина r = ∥ξ∥ этого вектора
2 2 2


будет иметь плотность распределения 2/π s2 e−s /2 .
2

Как уже обсуждалось в разделе 7.2.1, если случайный вектор ξ имеет распределение (7.2.7),
то вектор υ = ξ/∥ξ∥ равномерно распределен на поверхности сферы {(x, y, z) : x2 + y 2 + z 2 = 1}.

68
С другой стороны, координаты υ1 , υ2 , υ3 этого вектора выражаются через случайные величины
φ и θ как

υ1 = cos(φ) cos(θ), υ2 = sin(φ) cos(θ), υ3 = sin(θ). (7.2.8)

Поскольку θ имеет плотность pθ (u) = cos(u)/2, |u| ≤ π/2, а функция sin(u) обратима на этом
интервале, то, согласно Предложению 15,
1
pυ3 (z) = 0.5 cos(arcsin(z)) arcsin′ (z) = 0.5 cos(arcsin(z)) = 0.5
cos(arcsin(z))

при |z| < 1. Таким образом, υ3 ∈ U(−1, 1). Конечно, такое же распределение имеет и скалярное
произведение υt = υ T t для любого детерминированного вектора t единичной длины.116

7.2.3 Гамма-распределение и распределение Дирихле


По определению, случайная величина ξ имеет гамма-распределение Gamma(k, µ) с параметра-
ми k > 0 (параметр формы) и µ > 0 (параметр масштаба), если у нее существует плотность
распределения, сосредоточенная на (0, ∞) и задаваемая формулой

µk k−1 −µx
pξ (x) = x e , x > 0.
Γ(k)

Случайный вектор (ξ1 , . . . , ξd )T имеет распределение Дирихле Dd (k1 , . . . , kd+1 ) с положитель-


ными параметрами ki , если его плотность распределения имеет вид

Γ(k1 + . . . + kd+1 ) k1 −1 kd −1 ( )kd+1 −1 ∑


d
pd (x1 , . . . , xd ) = x . . . xd 1 − x1 − . . . − xd , xi > 0, xi < 1.
Γ(k1 ) . . . Γ(kd+1 ) 1
i=1

∑d Если k1 = . . . = kd+1 = 1, то распределение Dd (k1 , . . . , kd+1 ) равномерно в области xi > 0,


i=1 xi < 1. При d = 1 распределение Дирихле называется бета-распределениям и обозначается
Beta(k1 , k2 ).
Приведем одно утверждение, связывающее гамма-распределение и распределение Дирихле.

Предложение 16. 1. Пусть η1 , . . . , ηd , ηd+1 — независимые случайные величины, причем ηi ∈


Gamma(ki , µ). Обозначим ξd+1 = η1 + . . . + ηd+1 и ξi = ηi /ξd+1 при 1 ≤ i ≤ d. Тогда вектор
ξ = (ξ1 , . . . , ξd )T и случайная величина ξd+1 независимы, причем ξ ∈ Dd (k1 , . . . , kd+1 ) и ηd+1 ∈
Gamma(k, µ), где k = k1 + . . . + kd+1 .
2. Пусть η ∈ Gamma(k, µ). Кроме того, рассмотрим случайный вектор π = (π1 , . . . , πd )T ∈
Dd (k1 , . . . , kd+1 ) и положим πd+1 = 1 − π1 − . . . − πd . Если η, π независимы и k = k1 + . . . + kd+1 ,
то при i = 1, . . . , d + 1 случайные величины ξi = πi η независимы и ξi ∈ Gamma(ki , µ).

Доказательство. 1. Применим Предложение 15 c n = 1, D = (0, ∞)d+1 и


 xi
 при i = 1, . . . , d,
ϕ(x1 , . . . , xd+1 ) = x1 + . . . + xd+1
x + . . . + x при i = d + 1.
1 d+1

Тогда обратное отображение ψ запишется как


{
yi yd+1 при i = 1, . . . , d,
ψ(y1 , . . . , yd+1 ) = (ψ1 , . . . , ψd+1 )T = ( ) (7.2.9)
yd+1 1 − y1 − . . . − yd при i = d + 1,
116
Этот факт можно также вывести из известной теоремы школьной стереометрии о том, что площадь поверх-
ности сферы, высекаемая двумя параллельными плоскостями, пропорциональна расстоянию между этими плос-
костями.

69
где yi > 0 и y1 + . . . + yd < 1. Ясно, что


 y при i = j = 1, . . . , d,
 d+1


 при i, j ∈ {1, . . . , d}, i ̸= j,
0
∂ψi /∂yj = yi при i = 1, . . . , d, j = d + 1,



 1 − (y1 + . . . + yd ) при i = j = d + 1,



−yd+1 при i = d + 1, j < d.
Это означает,117 что | det ψ ′ | = yd+1
d и, обозначив k = k1 + . . . + kd+1 , получим, что совместная
плотность распределения случайных величин ξ1 , . . . , ξd+1 равна

µk ∏
d ( ∑
d )kd+1 −1
kj −1 k −1 −µyd+1
pξ (y1 , . . . , yd+1 ) = ∏d+1 (yj yd+1 ) 1− yj d+1
yd+1 e d
yd+1 =
j=1 Γ(kj ) j=1 j=1

Γ(k) ∏
d ( )kd+1 −1 µk

d
k −1 k−1 −µyd+1
= ∏d+1 yj j 1− yj yd+1 e , (7.2.10)
j=1 Γ(kj ) j=1
Γ(k)
j=1

где yi > 0 и y1 + . . . + yd < 1. Первое утверждение доказано.


2. Совместное распределение случайных величин π1 , . . . , πd , η имеет плотность распределения
(7.2.10). Взаимно-однозначное преобразование, переводящее эти случайные величины в случай-
ные величины ξ1 , . . . , ξd+1 , имеет вид (7.2.9). Таким образом, второе утверждение Предложения
16 является обратным к первому, и, тем самым, становится очевидным.118

7.2.4 Распределения порядковых статистик


Пусть α1 , . . . , αn — независимые случайные величины, равномерно распределенные на (0, 1).
При каждом элементарном событии ω упорядочим числа αi (ω) по возрастанию и получим но-
(n) (n) (n)
вые случайные величины 0 ≤ α[1] ≤ . . . ≤ α[i] ≤ . . . ≤ α[n] ≤ 1. Эти случайные величи-
ны принято называть порядковыми статистиками (выборки из распределения U(0, 1)). Конечно,
(n) (n)
α[1] = min(α1 , . . . , αn ) и α[n] = max(α1 , . . . , αn ).
Предложение 15 позволяет легко получить следующий результат.
( )
(n) (n) T
Предложение 17. Случайный вектор ξ = α[1] , . . . , α[n] равномерно распределен в области
G = {(x1 , . . . , xn ) : 0 < x1 < . . . < xi < . . . < xn < 1}.
Доказательство. Обозначим Ψ множество перестановок чисел 1, . . . , n. Зафиксируем ψ ∈ Ψ с
ψ(1, . . . , n)= (i1 , . . . , in ). При X = (x1 , . . . , xn )T будем обозначать ψX вектор (xi1 , . . . , xin )T .
Обозначим Dψ = ψG. Тогда, очевидно, множества Dψ1 и Dψ2 дизъюнктны при ψ1 ̸= ψ2 . Кроме
того,
( ∪ )
mesn (0, 1)n \ Dψ = 0.
ψ∈Ψ

Ясно, что при фиксированном ψ ∈ Ψ отображение Θψ : G 7→ Dψ , поточечно определенное как


X 7→ ψX, является линейным и невырожденным. При этом матрица отображения Θψ ортонор-
мированна и, следовательно, имеет определитель, по модулю равный 1.
( (n) (n) )T
В этих обозначениях отображение ϕ, преобразующее ξ = (α1 , . . . , αn )T в η = α[1] , . . . , α[n]
может быть (с точностью до множества меры ноль) записано как
ϕ(x1 , . . . , xn ) = Θ−1
ψ (x1 , . . . , xn ) при (x1 , . . . , xn ) ∈ Dψ ,

причем ϕDψ = G для любого ψ ∈ Ψ. Тем самым (7.1.1) приобретает вид



pη (Y ) = pξ (ψY ) IG (Y ) = n! IG (Y ), (7.2.11)
ψ∈Ψ

что и требовалось доказать.


117
Проверьте!
118
Действительно?

70
Следствие 6. Пусть 1 ≤ s ≤ n и 1 ≤ k1 < . . . < ks ≤ n. Тогда в условиях Предложения 17
последовательные разности порядковых статистик
(n) (n) (n) (n) (n)
α[k1 ] , α[k2 ] − α[k1 ] , . . . , α[ks ] − α[ks−1 ] (7.2.12)

имеют совместное распределение Ds (ℓ1 , . . . , ℓs+1 ), где ℓ1 = k1 , ℓs+1 = n − ks + 1 и ℓj = kj − kj−1


при 1 < j ≤ s.
(n) (n)
Доказательство. Достаточно доказать, что случайные величины α[k1 ] , . . . , α[ks ] имеют совмест-
ную плотность

Γ(n + 1) ∏
s+1
pk1 ...ks (x1 , . . . , xs ) = ∏s+1 (xj − xj−1 )ℓj −1 , (7.2.13)
j=1 Γ(ℓj ) j=1

где 0 < x1 < . . . < xs < 1, а переменные x0 ≡ 0 и xs+1 ≡ 1 введены только для удобства записи.
Это немедленно следует из равенства (7.2.2) и определения распределения Дирихле.
Для простоты будем доказывать равенство (7.2.13) при s = 2, k1 > 1 и ks < n. Согласно
(7.2.11), плотность pk1 ,k2 совместного распределения случайный величин α[k1 ] , α[k2 ] имеет вид
∫ ∫ ∫
pk1 ,k2 (x1 , x2 ) = n! dz1 . . . dzk1 −1 dzk1 +1 . . . dzk2 −1 dzk2 +1 . . . dzn ,
Sk1 −1 (0,x1 ) Sk2 −k1 −1 (x1 ,x2 ) Sn−k1 (x1 ,1)

где 0 < x1 < x2 < 1, 0 < s < t и Sj (s, t) = {(z1 , . . . , zj ) : s < z1 < . . . < zj < t}. Поскольку119

dz1 . . . dzj = (t − s)j /j! ,
Sj (s,t)

то
n!
pk1 ,k2 (x1 , x2 ) = xk1 −1 (x2 − x1 )k2 −k1 −1 (1 − x2 )n−k2 ,
(k1 − 1)!(k2 − k1 − 1)!(n − k2 )! 1

что соответствует (7.2.13). Общий случай исследуется аналогично.

Замечание 17. В частности, из Следствия 6 следует, что совместное распределение распреде-


(n) (n) (n) (n) (n)
ление приращений порядковых статистик α[1] , α[2] − α[1] , . . . , α[n] − α[n−1] имеет распределение
Дирихле∑Dn (1, . . . , 1), которое, в свою очередь, является равномерным распределением в области
xi > 0, di=1 xi < 1.

119
Почему?

71
8 Приложение 2. Многомерные гауссовские распределения
Определение 2. Говорят, что случайный вектор ξ = (ξ1 , . . . , ξd )T ∈ Rd имеет (d-мерное)
гауссовское распределение, если для любого t ∈ Rd случайная величина (ξ, t) имеет нормальное
распределение120 с некоторыми параметрами at и σt2 .

Нужные нам свойства многомерных гауссовских распределений объединены в три леммы.

8.1 Общий случай


Лемма 7. (Характеристическая функция гауссовского вектора)
Пусть ξ = (ξ1 , . . . , ξd )T ∈ Rd имеет гауссовское распределение. Тогда характеристическая функ-
ция φξ (t) случайного вектора ξ имеет вид
( ) ( )
φξ (t) = exp i(a, t) exp − (Σt, t)/2 , (8.1.1)

где a = Eξ и Σ — ковариационная матрица вектора ξ.

Доказательство. Прежде всего заметим, что компоненты гауссовского вектора обладают всеми
моментами. Действительно, взяв j-ый орт в качестве t, мы получим, что ξj имеет нормальное
распределение. Следовательно, мы можем говорить о среднем a и ковариационной матрице Σ
вектора ξ.
T
Сосчитаем теперь среднее at и дисперсию σt2 скалярного произведения (ξ, t) = t ξ. Ясно, что
at = (a, t). Для вычисления дисперсии достаточно рассмотреть случай a = 0. Тогда
(T T ) T ( T) T ( )
σt2 = E(ξ, t)2 = E t ξ ξ t = t E ξ ξ t = t Σ t = Σ t, t .

Следовательно, характеристическая функция ψt (τ ) скалярного произведения (ξ, t) равна


( ) ( ) ( )
ψt (τ ) = E exp i(ξ, t)τ = exp i(a, t)τ exp − (Σ t, t)τ 2 /2 (8.1.2)

Полагая τ = 1 в (8.1.2), приходим к нужному нам результату.

Таким образом, распределение d-мерного гауссовского случайного вектора ξ полностью опре-


деляется его средним a и ковариационной матрицей Σ. Поэтому мы будем использовать запись
ξ ∈ Nd (a, Σ). Отметим, что невырожденность ковариационной матрица при этом не предполага-
ется.

Следствие 7. Для того, чтобы компоненты гауссовского вектора ξ ∈ Nd (a, Σ) были независи-
мы, необходимо и достаточно, чтобы они были попарно некоррелированы.121

Доказательство. Случайный вектор ξ = (ξ1 , . . . , ξd )T имеет независимые компоненты тогда и


только тогда, когда его характеристическая функция φξ (t1 , . . . , td ) распадается в произведение
некоторых функций вида ψj (tj ). Поскольку попарная некоррелированность компонент этого век-
тора эквивалентна диагональности его ковариационной матрицы, то утверждение следует из фор-
мулы (8.1.1).

Лемма 8. (Сохранение гауссовости при афинных преобразованиях. Существование.)


def
1. Если ξ ∈ Rd , ξ ∈ Nc (a, Σ), b ∈ Rk и матрица A имеет d столбцов и k строк, то η = Aξ + b ∈
Nk (b + Aa, AΣAT )
2. Каковы бы ни были вектор a ∈ Rd и d × d неотрицательно определенная матрица Σ, суще-
ствует такое вероятностное пространство (Ω, F, P) и такая случайная величина ξ : (Ω, F) 7→
(Rd , Bd ), что ξ ∈ Nd (a, Σ).
120
Напомним, что по нашему соглашению постоянная a имеет нормальное распределение N(a, 0).
121
Здесь нам удобно считать, что случайные величины ξ и η некоррелированы, если Cov(ξ, η) = 0.

72
Доказательство. 1. Гауссовость случайного вектора η следует из цепочки равенств

(η, s) = (Aξ + b, s) = (b, s) + (ξ, AT s)

и Определения 2. Вычисляя среднее и ковариационную матрицу вектора η, получаем оконча-


тельный результат.
2. Прежде всего, нам достаточно рассматривать случай a = 0. Пусть µ1 ≥ . . . µd ≥ 0 — соб-
ственные числа матрицы Σ с учетом их кратности. Обозначим U1 , . . . , Ud соответствующую орто-
нормированную систему собственных векторов и положим U = [U1 : . . . : Ud ]. Ясно, что матрица
U является ортонормированной, причем Σ = U ΛU T , где матрица Λ диагональна с элементами
λjj = µj .
Рассмотрим теперь случайный вектор η = (η1 , . . . , ηd )T такой, что ηj ∈ N(0, µj ) и потребуем,
чтобы эти компоненты были независимы. Такие случайные величины существуют.122 Более того,
так как линейная комбинация независимых нормальных случайных величин имеет нормальное
распределение, то вектор η имеет гауссовское распределение. Точнее, η ∈ Nd (0, Λ).
Теперь, положив ξ = U η, получим требуемое из первого утверждения леммы.

8.2 Невырожденный случай


Лемма 9. Пусть ξ ∈ Nd (a, Σ). Если матрица Σ невырождена, то распределение вектора ξ
абсолютно непрерывно с плотностью

det Σ−1/2 −(Σ−1 (X − a), X − a)/2


pξ (X) = e , X ∈ Rd . (8.2.1)
(2π)d/2

Доказательство. Нам снова достаточно рассматривать случай a = 0. Действуя так же, как в
Лемме 8, рассмотрим собственные числа µj матрицы Σ и соответствующие матрицы U и Λ. Так
как матрица Σ невырождена, то µj > 0 при всех j.
Введем гауссовский случайный вектор η = (η1 , . . . , ηd )T с независимыми компонентами и та-
кой, что ηj ∈ N(0, µj ). Нетрудно видеть, что плотность распределения этого вектора имеет вид

det Λ−1/2 −(Λ−1 Y, Y )/2


pη (Y ) = e , Y ∈ Rd .
(2π)d/2

Положим теперь ξ = U η. Согласно Лемме 8, ξ ∈ Nd (0, Σ). С другой стороны, так как U −1 = U T ,
det Σ = det Λ и Σ−1 = U Λ−1 U T , то из (7.2.1) мы получаем, что

det Λ−1/2 −(Λ−1 U −1 Y, U −1 Y )/2


pξ (X) = | det U |−1 pη (U −1 X) = e =
(2π)d/2
det Σ−1/2 −(U Λ−1 U T Y, Y )/2 det Σ−1/2 −(Σ−1 Y, Y )/2
= e = e .
(2π)d/2 (2π)d/2

Утверждение доказано.

122
Действительно, приведенное описание полностью определяет распределение случайного вектора η как меры на
борелевской σ-алгебре в Rd . А для любой вероятностной тройки (Rd , Bd , P) существует такое вероятностное про-
странство (Ω, F , P) и такой случайный вектор ξ : (Ω, F ) 7→ (Rd , Bd ), что L(ξ) = P. Для доказательства последнего
факта достаточно взять Ω = Rd , F = Bd , P = P и ξ(ω) = ω для любого ω ∈ Ω.

73
9 Приложение 3. Упражнения
Равномерные распределения в различных множествах

1. Промоделировать равномерное распределение в объединении интервалов (−2, −1) и (1, 3).

2. Промоделировать равномерное распределение в квадрате с вершинами в точках (0, 0), (1, 1),
(0, 2) и (1, −1).

3. Промоделировать равномерное распределение в треугольнике с вершинами в точках (0, 0),


(1, 0) и (0, 1) без использования метода отбора.

4. Промоделировать равномерное распределение в произвольном треугольнике без использо-


вания метода отбора.

5. Промоделировать равномерное распределение в четырехугольнике с вершинами в точках


(0, 0), (1, 3), (3, 1) и (4, 5), не используя метода отбора.

6. Промоделировать равномерное распределение в четырехугольнике с вершинами в точках


(0, 0), (2, 0), (2, 1) и (1, 3), не используя метода отбора.

7. Промоделировать равномерное распределение в объединении прямоугольника (−1, 1)×(0, 1)


и треугольника с вершинами в точках (2, 0), (3, 0) и (3, 2) без использования метода отбора.

8. Промоделировать равномерное распределение в объединении треугольников с вершинами


в точках (0, 0), (1, 0) и (1, 1) и в точках (0, 0), (−1, 0) и (−1, −1) без использования метода
отбора.

9. Промоделировать равномерное распределение в выпуклом пятиугольнике с вершинами в


точках (0, 0), (0, 2), (2, 2), (3, 0) и (2, −2), не используя метода отбора.

10. Промоделировать равномерное распределение в правильном шестиугольнике с центром в


нуле и со стороной, равной 1.

11. Промоделировать тремя способами равномерное распределение в объединении квадратов с


вершинами в точках ((0, 0), (1, 1), (2, 0), (1, −1)) и ((0, 0), (−1, 1), (−2, 0), (−1, −1)) соответ-
ственно.

12. Промоделировать равномерное распределение в разности квадратов [0, 1]2 и [ε, 1−ε]2 . Число
ε ∈ (0, 0.5) — параметр.

13. Промоделировать равномерное распределение в эллипсе


{ }
x2 y 2
(x, y) : 0 ≤ 2 + 2 ≤ 1
a b

двумя способами.

14. Промоделировать двумя способами равномерное распределение в объединении квадрата


[0, 1]2 и круга {(x, y) : x2 + y 2 ≤ 1}.

15. Промоделировать равномерное распределение в области

{(x, y) : R12 ≤ x2 + y 2 ≤ R22 }

двумя способами, один из которых имеет трудоемкость, равномерно ограниченную по па-


раметрам 0 ≤ R1 < R2 .

16. Промоделировать равномерное распределение в объединении кругов радиуса 2 и 3 с цен-


трами в точках (−2, 0) и (1, 2) соответственно.

74
17. Промоделировать равномерное распределение в объединении эллипсов
{ } { }
(x, y) : 0 ≤ x2 + 2 y 2 ≤ 1 и (x, y) : 0 ≤ 3 x2 + y 2 ≤ 1 .

18. Промоделировать равномерное распределение в пересечении 2-х кругов {(x, y) : x2 +y 2 ≤ 1}


и {(x, y) : (x + ε)2 + y 2 ≤ 1}, где ε — маленькое число.

19. Промоделировать равномерное распределение в подграфике плотности показательного рас-


пределения EXP(1).

20. Промоделировать равномерное распределение в области

{(x, y, z) : R12 ≤ x2 + y 2 + z 2 ≤ R22 }

двумя способами, один из которых имеет трудоемкость, равномерно ограниченную по па-


раметрам 0 ≤ R1 < R2 .

21. Промоделировать равномерное распределение в цилиндре

{(x, y, z) : 0 ≤ x2 + y 2 ≤ 1, 0 ≤ z ≤ 1}.

22. Промоделировать двумя способами равномерное распределение в прямом круговом конусе


с высотой 1 и основанием {(x, y) : x2 + y 2 ≤ 1}.

23. Промоделировать равномерное распределение в правильном тетраэдре, не используя метод


отбора.

24. Промоделировать равномерное распределение в единичном трехмерном шаре с центром в


нуле, не используя трехмерный вариант метода отбора.

25. Промоделировать равномерное распределение в трехмерном подграфике совместной плот-


ности двух независимых N(0, 1)-распределенных случайных величин.

26. Промоделировать равномерное распределение на границе квадрата [−1, 1]2 двумя способа-
ми.

27. Промоделировать равномерное распределение на объединении границ квадратов [−2, 2]2 и


[−4, 4]2 .

28. Промоделировать равномерное распределение на границе треугольника с вершинами в точ-


ках (0, 0), (1, 0) и (0, 1) двумя способами.

29. Промоделировать равномерное распределение на границе правильного шестиугольника с


центром в нуле и со стороной, равной 1.

30. Промоделировать равномерное распределение на объединении двух окружностей с центра-


ми в точках (0, 0) и (−1, 1) и радиусами 1 и 2 соответственно.

31. Промоделировать равномерное распределение на объединении сфер

{(x, y, z) : 0 ≤ x2 + y 2 + z 2 = 1} и {(x, y, z) : 0 ≤ x2 + y 2 + z 2 = 4}.

32. Промоделировать равномерное распределение на поверхности цилиндра

{(x, y, z) : 0 ≤ x2 + y 2 ≤ 1, 0 ≤ z ≤ 1}.

33. Промоделировать равномерное распределение на границе правильного тетраэдра.

34. Промоделировать равномерное распределение на поверхности прямого усеченного конуса с


основаниями {(x, y, z) : x2 + y 2 ≤ 2, z = 0} и {(x, y, z) : x2 + y 2 ≤ 1, z = 1}.

75
Одномерные абсолютно непрерывные распределения

1. Промоделировать методам отбора распределение с плотностью p(x) = 3x2 на отрезке [0, 1],
используя q1 (x) = 2x и q2 (x) = 1. Сравнить методы.

2. Промоделировать двумя способами распределение с плотностью p(x) = 0.5λe−λ|x−a| , где


a ∈ R и λ > 0.
( )
3. Промоделировать распределение с плотностью p(x) = c e−x + ex + xe−x , x ∈ [0, 1], не
2

используя метод отбора.


( )
4. Промоделировать распределение с плотностью p(x) = c x − x2 , x ∈ [0, 1], двумя способами,
один из которых не использует метод отбора.

5. Промоделировать двумя способами распределение с плотностью


{
e−x при 0 < x ≤ L,
p(x) = c
0 иначе.

Сравнить трудоемкости моделирования в зависимости от L.

6. Промоделировать двумя способами распределение с плотностью


{
e−|x| при |x| > a,
p(x) = c
1 иначе.

Сравнить трудоемкости моделирования в зависимости от a.

7. Промоделировать двумя способами распределение с плотностью


( )
p(x) = c e−x 1−1,+∞ (x) + ex 1−∞,1 (x) .
( )
8. Промоделировать распределение с плотностью p(x) = 5 1 + (x − 1)4 /12 , x ∈ [0, 2].

9. Промоделировать методом отбора (3 способа) распределение с плотностью




 1 при −1 ≤ x ≤ 0,

x при 0 < x ≤ 1,
p(x) = c −x

 e при x > 1,

0 иначе.

10. Промоделировать двумя способами распределение с плотностью


 −x
 e + e−x
2
при x ≥ 0,
p(x) = c −x + x2 при −1 < x < 0,
 2x
e при x < −1.

11. Провести моделирование распределения с плотностью


 −(x−1)2
 e при x > 1,
p(x) = c x2 при |x| ≤ 1,
 x
e при x < −1.

12. Промоделировать тремя способами распределение с плотностью

p(x) = c (x − εx(1 − x)),

сосредоточенной на отрезке [0, 1]. Параметр ε мал и положителен.

76
13. Провести моделирование распределения с плотностью
{ −2|x|
e при |x| ≤ 1,
p(x) = c
e−|x| иначе

тремя способами.

14. Провести моделирование распределения с плотностью


{
x2 + (2π)−1/2 e−x /2 при |x| ≤ 2,
2

p(x) = c
(2π)−1/2 e−x /2
2
иначе.

15. Придумать несколько способов моделирования распределения с плотностью


{
|x|−1 e−2x−x
2
при |x| ≥ 1,
p(x) = c
0 иначе.

16. Придумать несколько способов моделирования распределения с плотностью

p(x) = c (1 + |x|)−3 .

17. Придумать несколько способов моделирования распределения с плотностью

p(x) = c e−x
2 −|x|3
.
2 −|x|3
18. Промоделировать распределение с плотностью p(x) = c ex .

19. Придумать несколько способов моделирования распределения с плотностью

p(x) = c |x|3 e−x (1 + |x|α ),


4

при положительном значении параметра α.

20. Промоделировать распределение с плотностью


{ −x2
e при A ≤ |x| ≤ B,
p(x) = c
0 иначе

тремя способами.

21. Промоделировать распределение с плотностью


{ −x2
e при 0 ≤ x ≤ A,
p(x) = c
0 иначе

при маленьком и большом A.

22. Промоделировать распределение с плотностью


{ −x2
e при 1 ≤ x ≤ ∞,
p(x) = c
0 иначе
и исследовать его трудоемкость.
Указание. Если Φ — функция распределения N(0, 1), то Φ(1) ≈ 0.8423 . . .

23. Промоделировать распределение с плотностью


{ −x2
e при 0 ≤ x ≤ ∞,
p(x) = c
0 иначе
не моделируя нормальное распределение.

77
24. Промоделировать распределение с плотностью p(x) = c (1 + |x|)−3 .

25. Провести двумя способами моделирование распределения с плотностью



 1 − x4 при −1 ≤ x ≤ 0,
p(x) = c x2 при 0 < x ≤ 1,

0 иначе.

26. Промоделировать тремя способами распределение с плотностью


 2
 x при 0 ≤ x ≤ 1,
p(x) = c c при 1 < x ≤ 2,

0 иначе.

27. Промоделировать тремя способами распределение с плотностью



 1 при 0 ≤ x ≤ 1,
p(x) = c x2 при 1 < x ≤ 2,

0 иначе.

28. Промоделировать четырьмя способами распределение с плотностью


 2
 x при 1 ≤ x ≤ 1,
p(x) = c 1 при 1 < x ≤ 5/3,

0 иначе.

29. Промоделировать тремя способами распределение с плотностью p(x) = c(x2 + x3 + x4 ),


x ∈ [0, 1].

30. Промоделировать распределение с плотностью p(x) = ce−ax (1 + e−bx ), x > 0. Параметры


a, b положительны.

31. Промоделировать распределение с плотностью p(x) = c(x−2 + x2 e−x ), x > 1.


3

32. Промоделировать распределение с плотностью


 2
 x при 0 ≤ x ≤ 1,
p(x) = c x + 1 при 1 < x ≤ 2,

0 иначе.

33. Промоделировать распределение с плотностью


 2
 x при 0 ≤ |x| ≤ 1,
p(x) = c |x| − 1 при 1 < |x| ≤ 2,

0 иначе.

34. Промоделировать распределение с плотностью


{ −(1−x)2
e при x ≥ 1,
p(x) = c
0 иначе.

35. Промоделировать двумя способами распределение с плотностью


{ −|x|
e при x ≥ 1,
p(x) = c
0 иначе.

36. Промоделировать двумя способами распределение с плотностью


{ −2
x при |x| ≥ 1,
p(x) = c
|x| иначе.

78
37. Промоделировать тремя способами распределение с плотностью
 x
 e при |x| ≤ 1,
p(x) = c |x| при 1 < |x| ≤ 2,

0 иначе.

38. Промоделировать тремя способами распределение с плотностью



 x/2 при 0 ≤ x ≤ 1,
p(x) = c (3 − x) при 1 < x ≤ 2,

0 иначе.

39. Промоделировать тремя способами распределение с плотностью



 |x − 3|/2 при |x − 3| ≤ 2,
p(x) = c 1 при 5 < x ≤ 6,

0 иначе.

40. Промоделировать тремя способами распределение с плотностью



 |x − 1| при |x − 1| ≤ 1,
p(x) = c |x + 1| при |x + 1| ≤ 1,

0 иначе.

41. Промоделировать тремя способами распределение с плотностью



 2 − x при 0 < x ≤ 2,
p(x) = c x + 1 при −1 < x ≤ 0,

0 иначе.

42. Промоделировать тремя способами распределение с плотностью



 1 при −1 < x ≤ 0,
p(x) = c 2 − |x − 1| при 0 < x ≤ 2,

0 иначе.

43. Промоделировать тремя способами распределение с плотностью



 1 − |x|
при 0 < |x| ≤ 1,
p(x) = c 1 − |x| − 3 при 2 < |x| ≤ 4,

0 иначе.

44. Промоделировать тремя способами распределение с плотностью




 1 при −2 < x ≤ −1,

2 при 1 < x ≤ 2,
p(x) = c

 |x| при |x| ≤ 1,

0 иначе.

45. Промоделировать тремя способами распределение с плотностью




 1 при 0 < x ≤ 1,

2 − x при 1 < x ≤ 2,
p(x) = c x + 1/2 при −1 < x ≤ 0,

 1 − 2

0 иначе.

79
46. Промоделировать двумя способами распределение с плотностью

 |x|3 + e−|x| при |x| ≤ 1,
p(x) = c e−2x при x > 1.
 3x
e иначе.

47. Промоделировать двумя способами распределение с плотностью


 x
 e при x ≤ −2,
p(x) = c 1 при −2 < x < 1.
 −(x−1)2
e иначе.

48. Промоделировать двумя способами распределение с плотностью


{ 2
x при |x| ≤ 2,
p(x) = c −|x|
e при |x| > 2.

49. Промоделировать двумя способами распределение с плотностью


{ √
1/√x при 0 < x ≤ 1/2,
p(x) = c
1/ 1 − x при 1/2 < x < 1.

50. Промоделировать двумя способами распределение с плотностью


{ √
1 1/ x(1 − x) при 0 < x ≤ 1,
p(x) =
π 0 иначе.

51. Промоделировать распределение с плотностью


5 ( )
p(x) = 1 + (x − 1)4 , x ∈ [0, 2].
12

52. Промоделировать распределение с плотностью


( )
p(x) = c 0.5 + (2x + 1)3 , x ∈ [1, 2].

53. Промоделировать распределение с плотностью p(x) = cx2 e−x


2 /2
двумя способами, один из
которых не является методом отбора.

54. Промоделировать распределение с плотностью p(x) = cx3 e−x


2 /2
, x > 0, двумя способами,
один из которых не является методом отбора.

55. Промоделировать распределение с плотностью p(x) = cx5/3 e−x , x > 0.

56. Промоделировать случайную величину с плотностью распределения

e−λ(1−x)
p(x) = , x ∈ (0, 1).
λx + 1
Параметр λ положителен.

57. Промоделировать распределение с плотностью p(x) = cx/(1 + x4 ), x > 0.

58. Промоделировать распределение с плотностью p(x) = c cosh(x), 0 < x < 1.

59. Промоделировать распределение с плотностью p(x) = cx cosh(x), 0 < x < 1.

60. Промоделировать распределение с плотностью p(x) = cx sinh(R − x), 0 < x < R.

80
Моделирование двумерных и многомерных распределений

1. Промоделировать двумя способами распределение с плотностью


{ −x−y
e при x2 + y 2 ≤ 1,
p(x, y) = c
0 иначе.

2. Промоделировать распределение с плотностью


{ −x2 −y2
e при x > 0, y > 0,
p(x, y) = c
0 иначе

3. Промоделировать двумя способами распределение с плотностью


{
c e−x −y при x + y > 0,
2 2

p(x, y) =
0 иначе.

4. Промоделировать распределение с плотностью


{ −x2 −y2
e при −1 ≤ x + y ≤ 1, |x| < 3, |y| < 3,
p(x, y) = c
0 иначе

5. Промоделировать распределение с плотностью


{ −x2 −y2
e при |x + y| ≤ 1, |x − y| ≤ 1,
p(x, y) = c
0 иначе

двумя способами.

6. Промоделировать двумя способами распределение с плотностью


{ −x2 −y2
e при x2 + y 2 ≤ 1,
p(x, y) = c
0 иначе.

7. Промоделировать двумя способами распределение с плотностью


{ −x2 −y2
e при |x| < A, |y| ≤ B,
p(x, y) = c
0 иначе.

8. Промоделировать двумя способами распределение с плотностью


{
c e−x −y при x2 + y 2 > 1,
2 2

p(x, y) =
0 иначе.

9. Промоделировать двумя способами распределение с плотностью


{
c e−x −y при 1 ≤ x2 + y 2 ≤ 4,
2 2

p(x, y) =
0 иначе.

10. Промоделировать двумя способами распределение с плотностью


c
e−x
2 −y 2
p(x, y) = √ .
x2 + y 2

11. Промоделировать двумя способами распределение с плотностью

p(x, y) = c(x2 + y 2 ) e−x


2 −y 2
.

81
12. Промоделировать двумя способами распределение с плотностью

 2
x + y
2 при 0 ≤ |x|, |y| ≤ 1,
p(x, y) = c e −x 2 −y 2
при x2 + y 2 > 4,


0 иначе.

13. Промоделировать двумя способами распределение с плотностью




1 при 0 < x2 + y 2 < 1,
p(x, y) = c e−x −y при x2 + y 2 > 4,
2 2



0 иначе.

14. Промоделировать двумя способами распределение с плотностью


( )
p(x, y) = c x2 |y| + |x| y 2 e−x −y .
2 2

15. Промоделировать распределение с плотностью


{
c |x| |y| при |x| < 1, |y| < 1,
p(x, y) =
0 иначе.

16. Промоделировать распределение с плотностью


{
c |x| |y| при 0 ≤ x2 + y 2 ≤ 1,
p(x, y) =
0 иначе.

тремя способами. Сравнить трудоемкости.

17. Промоделировать распределение с плотностью


 c

 √ 2
 при x2 + y 2 ≤ 1,
x + y2
p(x, y) =


 0 иначе.

18. Промоделировать распределение с плотностью

p(x, y) = c (x2 |y| + |x| y 2 ) e−(x


2 +y 2 )
.

19. Промоделировать распределение с плотностью


{
c (e−x−y + ex+y ) при 0 ≤ |x|, |y| ≤ 1,
p(x, y) =
0 иначе.

двумя способами.

20. Промоделировать трехмерное распределение с плотностью





1 1
при ||x||2 ≤ A2 ,

1 + ||x||2 ||x||
p(x, y, z) = c


 0 иначе,

где ∥x∥ = x2 + y 2 + z 2 .

82
21. Промоделировать трехмерное распределение с плотностью



1
при ||x||2 ≤ A2 , x, y, z > 0,

1 + ||x||2
p(x, y, z) = c


 0 иначе,

где ∥x∥ = x2 + y 2 + z 2 .
22. Промоделировать распределение с плотностью
p(x, y, z) = c (|x| + |y| + |z|) e−(|x|+|y|+|z|) .

23. Промоделировать двумя способами распределение с плотностью


{
c |x| e−|y| при |x| + |y| ≤ 1,
p(x, y) =
0 иначе.

24. Промоделировать двумя способами распределение с плотностью


{
c xy e−x−y при x2 + y 2 ≤ 1,
p(x, y) =
0 иначе.

25. Провести двумя способами моделирование распределения с плотностью


 c

 1 + x2 + y 2 при x + y ≤ 1,
2 2

p(x, y) =


0 иначе.

26. Промоделировать случайный вектор с плотностью распределения


{
c (x2 + y 2 ) при x2 + y 2 ≤ 1,
p(x, y) =
0 иначе.

27. Промоделировать случайный вектор с плотностью распределения


{
c (x2 + y 2 ) при |x + y| ≤ 1,
p(x, y) =
0 иначе.

28. Промоделировать случайный вектор с плотностью распределения


{
c (x2 + y 2 ) при |x| + |y| ≤ 1,
p(x, y) =
0 иначе.

29. Промоделировать случайный вектор с плотностью распределения



p(x, y, z) = c x2 + y 2 + z 2 e−(x +y +z ) .
2 2 2

30. Промоделировать случайный вектор с плотностью распределения



p(x, y, z) = c x2 + y 2 + z 2 e−(x +y +z ) .
2 2 2 2

31. Промоделировать четырехмерный случайный вектор с плотностью


( )
p(x, y, z, t) = c e−(x +y +z +t ) + p1 (x, y, z, t) ,
2 2 2 2

где
{
|x| |y| |z| |t| при |x|, |y|, |z|, |t| < 1,
p1 (x, y, z, t) =
0 иначе.

83
32. Промоделировать случайный вектор с плотностью распределения
c 1
p(x, y, z) = √ .
1 + (x2 + y 2 + z 2 )2 x2 + y 2 + z 2

33. Промоделировать двумя способами случайный вектор с плотностью распределения


{
| ln(xy)| 0 ≤ x, y < 1,
p(x, y) = c
0 иначе.

34. Промоделировать двумя способами случайный вектор с плотностью распределения


{
x2 + y 2 + z 2 0 ≤ x2 + y 2 + z 2 < 1,
p(x, y, z) = c
0 иначе.

35. Промоделировать двумя способами случайный вектор с плотностью распределения


{
xyz 0 ≤ x < y < z < 1,
p(x, y, z) = c
0 иначе.

36. Промоделировать двумя способами случайный вектор с плотностью распределения


{
x + y + z 0 ≤ x, y, z < 1,
p(x, y, z) = c
0 иначе.

Гауссовские распределения
1. Промоделировать двумерный гауссовский вектор со средним (0, 0)T и ковариационной мат-
рицей
( )
1 1
Σ= .
1 1

2. Промоделировать трехмерный гауссовский вектор с нулевым средним и ковариационной


матрицей
 
1 0.5 1
Σ = 0.5 1 0 .
1 0 1

3. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
5 3 7
a = (2, 1, 0)T и Σ = 3 2 4 .
7 4 10

4. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
2 3 4
a = (0, 1, 1) T 
и Σ= 3 5 7 .
4 7 10

5. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 2 1
a = (0, −1, 1)T и Σ = 2 6 5 .
1 5 6

84
6. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если
 
1 3 2
a = (1, 1, 0)T и Σ = 2 3 3 .
2 3 3

7. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1
a = (1, 0, −1)T и Σ = 1 3 −1 .
1 −1 5

8. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
5 3 4
a = (3, 0, 1)T и Σ = 3 2 2 .
4 3 5

9. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 2 3
a = (0, 0, 1)T и Σ = 2 4 6 .
3 6 9

10. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
2 0 3
a = (0, 1, 2)T и Σ = 0 2 1 .
3 1 5

11. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 2
a = (1, 0, 1)T и Σ = 1 1 2 .
2 2 4

12. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
3 1 2
a = (1, 0, −1)T и Σ = 1 3 2 .
2 2 2

13. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 2 2
a = (1, 2, −1)T и Σ = 2 3 3 .
2 3 3

14. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
2 1 1 −1
 1 1 0 1
a = (0, 1, −1, 0)T и Σ = 
1
.
0 1 −2
−1 1 −2 5

85
15. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если
 
2 −1 1 −1
 −1 5 1 1
a = (2, 1, −1, 1)T и Σ = 
1
.
1 2 −2
1 1 −2 10

16. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1 0
 1 2 1 1
a = (−1, 1, −1, 2)T и Σ = 
1
.
1 5 −4
0 1 −4 5

17. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1 1
1 2 0 2 
a = (0, 1, −1, 3)T и Σ =  
1 0 2 0  .
1 2 0 3

18. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1 1
 1 3 −1 4 
a = (0, 1, 2, 2)T и Σ = 
1
.
−1 5 −1
1 4 −1 6

19. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
3 2 2 1
2 2 1 0
a = (0, 1, −1, −1)T и Σ = 
2 1 2 1 .

1 0 1 1

20. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1 1
1 2 0 2 
a = (0, 1, 1, −3)T и Σ =  
1 0 2 0  .
1 2 0 3

21. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
1 1 1 1
1 3 −1 2
a = (0, 1, 1, −1)T и Σ =  .
1 −1 5 0
1 2 0 2

22. Промоделировать гауссовский вектор со средним a и ковариационной матрицей Σ, если


 
3 2 1 1
2 6 2 −1
a = (3, 1, −1, −1)T и Σ = 
1 2 1 0  .

1 −1 0 1

23. Решить задачи Примера в разделе 5.2.

86
Различные распределения
1. Промоделировать случайную величину ξ с распределением

λk −λ
P(ξ = k) = c e при 0 ≤ k ≤ N .
k!
двумя способами. Число c = c(N ) считается известным.

2. Промоделировать случайную величину ξ с распределением

P(ξ = k) = cn Ckn 2−n , 0 < k < n

двумя способами.

3. Промоделировать случайную величину ξ с распределением

P(ξ = k) = cn Ckn 2−n , 0 < k < ⌊n/2⌋.

двумя способами.

4. Промоделировать распределение с плотностью


∫1
1
e−(x−y)
2 /2
p(x) = √ dy.
2 2π
−1

5. Промоделировать двумя способами распределение, имеющее функцию распределения


p
Fp (x) = при x ∈ [0, 1].
1 − (1 − p)x

Параметр p принимает значения из отрезка (0, 1).

6. Промоделировать двумя способами распределение с плотностью


{∑
n −n−1 + 1/(2 − x) при x ∈ [0, 1],
n≥0 nx 2
p(x) = c
0 иначе.

7. Промоделировать двумя способами распределение с плотностью


 ∑ xn

e−1 + ex−1 при x ∈ [0, 1],
p(x) = c (n − 1)!
n≥1

0 иначе.

8. Пусть мы умеем моделировать распределение с плотностью p(x). Как промоделировать


распределение с плотностью q(x) = 2xp(x2 ) ?

9. Предлагается моделировать распределение P двумя способами. Первый из них является


методом отбора распределения Q1 . Во втором сначала методом отбора с помощью распреде-
ления Q1 моделируется распределение Q, а потом моделируется P отбором из Q. Выяснить,
разные это методы или нет. Все условия для методов отбора считаются выполненными.
Проверить результат на примере абсолютно непрерывных распределений P, Q1 и Q с плот-
ностями p(x) = 3x2 , q(x) = 2x, q1 (x) = 1, где x ∈ [0, 1].

10. Промоделировать распределение с плотностью


 c
 при x2 + y 2 ≤ 1,
p(x, y) = x2 + y 2
0 иначе.

87
11. k маленьких различных шариков раскладываются по n различным большим ящикам (все
шарики помещаются в один ящик). Промоделировать двумя способами совместное распре-
деление числа шаров, попавших в ящики с номерами 1, 2 и 3.

12. Промоделировать двумя способами случайную величину ξ с распределением P(ξ = n) =


np2 (1 − p)n−1 , n ≥ 1, 0 < p < 1.

13. Промоделировать случайную величину ξ с распределением

3 + 2n+1
P(ξ = n) = , n ≥ 1.
22n+1

14. Промоделировать биномиальное распределение Bin(n, 0.5), если известно, что n является
параметром распределения, лежащим в промежутке от n0 до n0 + 10, где n0 — большое
число. Какой метод следует выбрать, чтобы моделирование было достаточно быстрым, а
требуемая память — не слишком большой? Приведите несколько вариантов решения.

88
Список литературы
[1] И.М. Соболь (1973), Численные методы Монте-Карло, М. Наука.

[2] С.М. Ермаков (1975), Метод Монте-Карло и смежные вопросы. 2-е изд., М., Наука.

[3] С.М. Ермаков, Г.А. Михайлов (1982), Статистическое моделирование, М. Наука.

[4] С.М. Ермаков (2009). Метод Монте-Карло в вычислительной математике. Вводный курс.
Невский диалект, СПб.

[5] R.Y.Rubinstein, B. Melamed (1997). Modern Simulation and Modelling, Wiley, NY.

[6] Handbook of Simulation. Principles, Methodology, Advances, Applications, and Practice (1998),
J. Banks (editor), Wiley, NY.

[7] G.S. Fishman (1999), Monte Carlo. Concepts, algorithms and applications, Springer-Verlag, New
York-Berlin-Amsterdam.

[8] J.E. Gentle (2003), Random Number Generation and Monte Carlo Methods (Statistics and
Computing), 2nd ed., Springer.

[9] R.Y.Rubinstein, D.P. Kroese (2008), Simulation and the Monte Carlo Method, 2nd ed. Wiley
Series in Probability and Statistics. Wiley-Interscience.

[10] L. Devroye (1986), Non-uniform random variate generation, Springer-Verlag, New York.

[11] Д. Кнут, Э. Яо. (1983), Сложность моделирования неравномерных распределений. Кибере-


нетический сборник, новая серия, выпуск 19, М. Мир, стр. 97 – 158.

[12] H.C. Chen and Y. Asau (1974), On generating random variates from an empirical distribution,
AIIE Transactions, V.6, pp. 163 – 166.

[13] A.J. Walker (1977), An efficient method for generating discrete random variables with general
distributions, ACM Transactions on Mathematical Software, V.3, pp. 253 – 256.

[14] R.A. Kronmal, A.V. Peterson (1979), On the alias method for generating random variables from
a discrete distribution, The American Statistician, V.33, pp. 214 – 218.

[15] M.D. Vose (1991), A linear algorithm for generating random numbers with a given distribution,
IEEE Transactions on Software Engineering, V.17, 9, pp. 972 – 974.

[16] М. Лоэв (1962), Теория вероятностей, М., ИЛ.

[17] П. Биллингсли (1977), Сходимость вероятностных мер, М., Наука.

[18] А.Н. Ширяев (2004), Вероятность-1, М., Изд-во МЦНМО.

[19] Д. Кнут (2007), Искусство программирования, т.2: Получисленные алгоритмы, М., Вильямс.

[20] С. Л. Марпл-мл. (1990), Цифровой спектральный анализ и его проиложения, М., Мир.

[21] J.H. Ahrens and U. Dieter (1974), Computer methods for sampling from gamma, beta, Poisson
and binomial distributions, Computing, v.12, pp. 223 - 246.

[22] J. von Neumann (1951), Various techniques used in connection with random digits, Applied Math
Series, V.12, p. 36–38.

[23] Б.Б. Походзей (1983), Преобразование случайных битов в случайные величины с конечными
дискретными распределениями, Вестник Ленингр. ун-та, Сер. 1, No 13, стр. 31–36.

[24] Б.Б. Походзей (1985), Преобразование случайных битов в случайные величины с произволь-
ными дискретными распределениями, Вестник Ленингр. ун-та, 1985. Сер. 1, No 1, стр. 39–43.

89
[25] А.Файнстейн (1960), Теория информации, М., ИИЛ.

[26] И. Чисар, Я. Кёрнер (1985), Теория информации. Теоремы кодирования для дискретных
систем без памяти. Мир, Москва, 395 с.

[27] Н.А. Воробьева, А.И. Коробейников, В.В. Некруткин (2012), Об оптимальном моделировании
дискретных распределений, Вестник СПбГУ, Сер. 1, Вып. 3, С. 14–23.

90

Оценить