Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы теории вероятностей. Что следует знать студенту-математику
.pdf
5.2. Инструменты моделирования
141
подыинтервалов одинаковой длины и равна длине такого подын
тервала. Настоящее случайное число может принимать любое воз
можное значение между 0 и 1. Случайное число из интервала
(,)01
позволяет вам смоделировать, например, исход одного броска
симметричной монеты, не подбрасывая настоящую монету: если
сгенерированное случайное число попало в интервал от 0 до 0,5
(вероятность этого равна 0,5), то результат броска — орел, в про
тивном случае решка. Производить случайные числа не так легко,
как кажется, особенно если их нужно генерировать быстро, эф
фективно и в больших количествах. Даже для моделирования не
сложного эксперимента требуемое количество случайных чисел
легко может достигать сотен тысяч или более
1
. Сгенерировать од
норазово очень большое количество случайных чисел и далее хра
нить их в памяти компьютера — практически нерешаемая задача.
Однако нашелся другой подход, оказавшийся столь же красивым,
сколь и практичным.
Вместо того чтобы генерировать настоящие случайные числа,
компьютер может генерировать так называемые псевдослучайные
числа и получать их с помощью неслучайной процедуры. Эта идея
принадлежит знаменитому венгеро-американскому математику
Джону фон Нейману (1903—1957), который внес глубочайший
вклад не только в математику, но также в физику и компьютерные
науки. Процедура генерации случайных чисел является итерационной по своей природе и определяется выбранной подходящим
образом функциейf. Берется начальное число
далее последовательно генерируются числа
==(), ()
zfzzfz
1021
, и так далее. Функцияfназывается генерато
zz
z
,,K
12
0
, «затравка»,
такие, что
ром псевдослучайных чисел, и ее следует выбирать так, чтобы по
следовательность
была статистически неотличима от последова
z
i
тельности настоящих случайных чисел. Результат действия
функцииfдолжен быть способен выдержать огромное число ста
тистических проверок на «случайность».
Первыми генераторами псевдослучайных чисел были так на
зываемые мультипликативные конгруэнтные генераторы. Если
-
-
-
-
-
-
-
-
-
-
-
-
1
В прежние времена для генерации случайных чисел иногда использова
лись весьма творческие методы. В 1920-х годах преступные синдикаты
Нью-Йорка использовали последние пять цифр баланса, ежедневно публи
куемого Министерством финансов США, для генерации выигрышных чи
сел проводимой ими нелегальной лотереи.
-
-
-

Глава 5. Метод Монте-Карло и вероятности
142
начать с положительного числа
zaz modulom
=
ii
()
-1
для
i = 12,,K
ные положительные целые числа, например,
Для этих выбранных чисел последовательность
ся после
строится случайное число
z
i
шагов, поэтому длина цикла здесь равнаm.Почислу
m -1
, такой генератор давал
z
0
,гдеaиm— правильно выбран
a = 16807иm =-21
будет повторять
z
i
с помощью формулы
u
i
u
=
i
ввиде
z
i
z
i
.
m
31
Новейшие генераторы случайных чисел не используют мульти
пликативный конгруэнтный метод. Они вообще не используют
умножение и деление. Эти генераторы очень быстры, имеют чрез
вычайно длинные периоды до того, как числа начнут повторяться,
и производят псевдослучайные числа высокого качества. Среди
софтверных инструментов вы найдете не только так называемый
генератор «Христофор Колумб» с циклом длины примерно
(производя по десять миллионов псевдослучайных чисел в секунду, он проработает больше
ность чисел начнет повторяться!), там будет и генератор «Вихрь
Мерсенна» с циклом длины
434
лет до того, как последователь-
10
19937
21
. Цикл работы этого генерато-
-
1492
2
ра до повторения, возможно, потребует больше времени, чем все
будущее существование человечества. Эти генераторы прошли
разнообразные проверки на случайность, включая тесты на однородность высокоразмерных строк чисел. Современные генераторы
необходимы для моделирований методом Монте-Карло, использующих гигантские массивы псевдослучайных чисел, например,
в физике или в финансовом инжиниринге.
Далее мы будем опускать приставку «псевдо» и говорить про
сто «случайное число» и «генератор случайных чисел».
.
-
-
-
-
5.2.2. Моделирование случайного числа
из конечного интервала
Как выбрать случайным образом число между двумя данными чис
ламиaиbтакими, что
те генератор случайных чисел, чтобы получить случайное число
между 0 и 1. Далее найдите случайное числоxмеждуaиbкак
Проверьте, что из
? Чтобы это сделать, сначала используй
ab<
xabau=+ -().
01<<u
следует
aa baub<+ - <()
.
-
-
u

5.2. Инструменты моделирования
Рис. 10. Моделирование случайной точки внутри прямоугольника
143
Эту же процедуру можно использовать, чтобы сгенерировать
случайную точку внутри прямоугольника. Пусть
(,)ac
01
и
(,)ac
— координаты четырех вершин прямоугольника,
11
(,)ac
00
,
(,)ac
10
см. рис. 10. Сначала с помощью генератора случайных чисел получите два случайных числа
точка
внутри прямоугольника задается как
(,)xy
xa a au yc c cu=+ - =+-
0101 0102
и
u
1
, лежащие в
2
u
() ().и
. Далее случайная
(,)01
,
5.2.3. Моделирование случайного целого
числа из конечного диапазона
Как случайным образом выбрать число из целочисленного диапа
зона
12,, ,K M
случайных чисел сгенерируйте случайное числоuмежду 0 и 1.
Тогда искомое случайное целое числоkзадается как
Функция
ньше или равногоx.Тоесть
для некоторого целогоk. Более обобщенно, случайное целое чис
лоkиз целочисленного диапазона
? Чтобы это сделать, сначала с помощью генератора
kMu=+ ´1int( ).
округляет числоxдо ближайшего целогоk,ме
int( )x
int( ) ,xk kxk=£<+если 1
aa b,,,+1 K
ka ba u=+ -+ ´int(( ) ).1
получается как
-
-
-

Глава 5. Метод Монте-Карло и вероятности
144
Для иллюстрации давайте смоделируем исход одного броска
симметричной игральной кости (
сгенерировано случайное число
1 6 0 60099 4+´ =int( , )K
.
u = 0 60099, K
). Если, например, было
M = 6
, то исходом будет
Для частного случая, когда каждая из вероятностей случайного
эксперимента кратна дроби
1
для некоторого целогоr, вы можете
r
использовать для получения распределения вероятности хитроум
ный метод массивов. Этот метод предполагает, что вам понадо
бится сгенерировать одно случайное целое число из диапазона от
1доr. Чтобы объяснить этот метод, расмотрим случайный экспе
,
и
римент с тремя возможными исходами
щими вероятностями
сив A[i] для
и
AA[] [ ]66 100 3== =L
i = 1100,,K
и 1. Далее вычислите
из диапазона
1100,,K
p
050= ,,p2015= ,
1
с
AA[] [ ]1501== =L
. Сгенерируйте случайное числоuмежду 0
ku=+ ´1100int( )
.ТогдаA[m] дает вам исход случайного экспе-
O
O
1
2
и
p3035= ,
, это случайное целое число
римента. Например, пусть вы сгенерировали
m = 64иA[]64 2=
. Это соответствует случайному исходу
и соответствую
O
3
.Создайтемас
,
AA[] []51 65 2== =L
u = 0 63044, K
.
O
2
.Тогда
-
-
-
-
-
5.2.4. Моделирование случайной
перестановки
Предположим, у вас есть 10 человек и 10 бейджей, пронумерован
ных от 1 до 10. Как раздать бейджи случайным образом так, чтобы
каждому человеку достался один бейдж? Нужно сгенерировать
случайную перестановку целых чисел
гласно порядку, заданному этой перестановкой. Алгоритм генера
ции случайной перестановки оказывается полезен для решения
многих вероятностных задач. Алгоритм генерации случайной пе
рестановки
( , ,..., )12 n
прост и элегантен. Его идея состоит в том,
чтобы сначала случайно выбрать одно из целых чисел
местить выбранное число на позициюn. Затем вы случайным об
разом выбираете одно из оставшихся
его на позицию
n -1
,ит.д.
, и раздать бейджи со
110,,K
целых чисел и ставите
n -1
1, ,K n
ипо
-
-
-
-
-
-

5.2. Инструменты моделирования
Алгоритм генерации случайной перестановки
145
1. Инициализируйте
tn:=
и
aj j[]:=
для
jn= 1, ,K
.
2. Сгенерируйте случайное числоuмежду 0 и 1.
3. Присвойте
ktu:int()=+ ´1
Поменяйте местами текущие значения
4.
tt:=-1
.Если
, вернитесь к шагу 2; в противном случае оста
t > 1
новитесь; результат — случайная перестановка
(случайное целое из диапазона
ak[]иat[]
.
([], , [])aan1 K
В качестве иллюстрации используем этот алгоритм для получе
ния случайной перестановки целых чисел 1, 2, 3 и 4.
Итерация 1.
u = 071397, K
,то
менты, стоящие на позициях
(,,,)1243
.
Итерация 2.
u = 010514, K
,то
менты, стоящие на позициях
(,,,)4213
.
Итерация 3.
u = 005982, K
,то
менты, стоящие на позициях
(,,,)2413
.
Итерация 4.
рестановкой
(,,,)2413
. Если сгенерированное случайное число
t:= 4
k =+ ´ =1 4 0 71397 3int( , )K
k = 3иt = 4в(,,,)1234
. Если сгенерированное случайное число
t:= 3
k =+ ´ =130105141int( , )K
k = 1иt = 3в(,,,)1243
. Если сгенерированное случайное число
t:= 2
k =+ ´ =120059821int( , ) .K
k = 1иt = 2в(,,,)4213
. Алгоритм останавливается со случайной пе
t:= 1
. Меняем местами эле-
, получаем
. Меняем местами эле-
, получаем
Меняем местами эле-
, получаем
.
1, ,K t
.
).
-
-
-
Самостоятельно проверьте, что этот же алгоритм, ничего в нем
не меняя, можно использовать для построения случайной переста
новки конечной последовательности объектов
(,, )aa
K
,вкото
n1
рой некоторые объекты повторяются несколько раз.
Этот алгоритм также можно использовать, чтобы смоделиро
вать случайное подмножество некоторого множества целых чисел.
Например, как смоделировать розыгрыш лотереи 6/45, в которой
шесть различных номеров случайным образом выбираются из на
бора чисел от 1 до 45? Это можно сделать, если взять алгоритм
с n = 45 и выполнить только первые6итераций, заполнив пози
ции
45 44 40,, ,K
.Тогда
aa[], ,[]45 40K
дадут нам шесть номеров, вы
павших в розыгрыше лотереи.
-
-
-
-
-
-

Глава 5. Метод Монте-Карло и вероятности
146
5.2.5. Моделирование случайной точки
внутри круга
В подразделе 5.2.2 вы узнали, как сгенерировать случайную точку
внутри прямоугольника. А как сгенерировать случайную точку
внутри круга? В данном случае есть осложняющий фактор: коор
динаты случайной точки внутри круга нельзя сгенерировать неза
висимо друг от друга. Для любой точки с координатами
жащейвнутрикругарадиусаrс центром в начале координат
должно выполняться условие
222
+<
xyr
кушение сгенерировать сначала случайное число
ла
(,)-- -ra ra
, а затем сгенерировать случайное числоyиз интервала
(,)-rr
2222
. Однако такая процедура нарушает требова-
. Поэтому возникает ис
из интерва
xa=
ние о том, что вероятность для случайной точки попасть
в заданную подобласть должна быть одинакова для любых двух
подобластей одинаковой площади.
Простой, но мощный метод
генерации случайной точки
внутри круга — метод попада-
ний и промахов. Его идея состоит в том, чтобы взять прямоугольник, в который вписана
данная ограниченная область,
и генерировать случайные точ
ки внутри прямоугольника до
тех пор, пока не получим точ
ку, попавшую внутрь круга.
Этот простой подход также
можно использовать для гене
рациислучайнойточкивнутри
любой ограниченной области
на плоскости. В качестве иллю
страции рассмотрим круг ради
уса 1 с центром в начале коор
динат
(,)--11,(, )11-,(,)-11и(,)11
. Этот круг вписан в квадрат с вершинами в точках
(,)00
, см. рис. 11. Случайная точка
Рис. 11. Моделирование случайной
-
точки внутри круга
-
-
(,)xy
этого квадрата находится так: генерируются два случайных числа
и
u
1
из
u
2
иберутсяxиyтакие, что
(,)01
(,)xy
внутри
,ле
(,)00
-
-
,
-
-

5.3. Приложения компьютерного моделирования
147
xuyu=- + ´ =- + ´12 12
и.
1
2
Далее вы проверяете, выполняется ли условие
22
xy
Если да, вы получили случайную точку
1+<.
внутри единично
(,)xy
го круга; если нет, повторите процедуру. В среднем вам придется
4
сгенерировать
= 1,273 случайных точек внутри квадрата, пока вы
p
не получите случайную точку внутри круга. Чтобы убедиться
4
в этом, заметьте, что
— это отношение площади квадрата к пло
p
щади единичного круга.
Метод попаданий и промахов применяется очень широко. Он
часто используется для нахождения площади ограниченной области
на плоскости или объема в пространстве более высокой размерности путем вписывания рассматриваемой области в прямоугольник или куб соответствующей размерности. Эти площади/объемы
обычно представлены в виде кратного интеграла. Классический
пример использования метода Монте-Карло для вычисления таких
интегралов — применение его для решения задач рассеяния нейтронов при создании атомной бомбы в Лос-Аламосской национальной лаборатории в 1944 году. Физикам Николасу Метрополису
и Станиславу Уламу нужно было вычислить кратные интегралы,
представляющие объем двадцатимерной области, и они придумали
метод попаданий и промахов для решения этой задачи.
-
-
5.3. Приложения компьютерного
моделирования
Компьютерное моделирование является мощным инструментом
для получения численных ответов на вероятностные задачи, у ко
торых аналитическое решение оказалось слишком сложным
Далее мы приводим несколько примеров для иллюстрации этого.
1
В статистике компьютерное моделирование составляет очень важ
ную часть часто используемого метода, называемого бутстрэппинг,
или бутстрэп. Этот метод используется в ситуациях, когда у вас есть одна
-
1
.
-

148 Глава 5. Метод Монте-Карло и вероятности
Компьютерное моделирование также можно использовать для са
мопроверки в случае, когда вы не уверены в правильности полу
ченного вами аналитического решения.
5.3.1. Задачи на геометрическую
вероятность
Задачи на геометрическую вероятность составляют класс вероятност
ных задач, которые часто кажутся очень простыми, но иногда их
очень трудно решить аналитически. Возьмите задачу о нахождении
математического ожидания для расстояния между двумя случайными
точками внутри единичного квадрата (с длиной стороны 1) и мате
матического ожидания расстояния между двумя случайными точками внутри единичного круга (радиуса 1). Аналитический вывод этих
математических ожиданий требует применения интегрального исчисления и ведет к следующим точным результатам:
1
2 2 5 1 2 0 5214
15
Однако оценить эти матожидания с помощью компьютерного
моделирования проще простого. Как в данном случае выглядит
программа моделирования? Сделайте очень большое количество
итераций. В каждой итерации сгенерируйте две случайных точки
(,)xy
11
и
(,)xy
с помощью метода из подраздела 5.2.2 для еди
22
ничного квадрата и с помощью метода из подраздела 5.2.5 для
единичного круга. Для каждой итерации вычислите расстояние
между этими двумя точками по теореме Пифагора
()().xx yy
2
-+-
2
1
1
128
09054[ln()], ,.++ + = =и
45
p
2
2
-
-
-
-
-
случайная выборка из популяции, и другие выборки из популяции сделать
невозможно. Вы хотите узнать из имеющихся данных, каков возможный
разброс значений некоторого статистического показателя популяции (на
пример, среднего или медианы). Идея бутстрэппинга состоит в том, чтобы
смоделировать из имеющегося набора данных достаточно большое количе
ство дополнительных выборок. Для построения каждой такой дополнитель
ной выборки вы случайным образом выбираете с замещением столько эле
ментов из вашего множества данных, сколько есть в этом множестве. По
сгенерированным дополнительным выборкам можно вычислить стандарт
ные ошибки и доверительные интервалы для многих статистических пока
зателей вашей исходной выборки.
-
-
-
-
-
-

5.3. Приложения компьютерного моделирования
149
Затем вычислите среднее всех найденных за проведенные ите
рации расстояний. Согласно закону больших чисел, это среднее
дает нам оценку математического ожидания расстояния между
двумя случайными точками. Большое количество итераций необ
ходимо для того, чтобы получить достаточно близкую оценку. Во
прос о том, сколько именно итераций нужно сделать, мы рассмот
рим в следующем разделе. За один миллион итераций были
получены оценки 0,5213 и 0,9053 для математического ожидания
расстояния между двумя случайными точками внутри единичного
квадрата и между двумя случайными точками внутри единичного
круга соответственно. Для заинтересованного читателя, использо
ванные нами для моделировании этой ситуации программы на
языке Python приведены в приложении к этой главе. Время вы
числения одного миллиона итераций на достаточно быстром
компьютере составляет несколько секунд.
5.3.2. Задачи о днях рождения
В классическом парадоксе дней рождения (он же задача о днях
рождения) нужно вычислить вероятность того, что у двух или более людей из случайным образом сформированной группы день
рождения выпадает на один и тот же день. Эта задача была решена аналитически в разделе 1.2. Найти ответ было легко. Задача
становится гораздо сложнее, если нужно найти вероятность того,
что у двух или более людей дни рождения отстоят друг от друга на
один день. Это задача о почти днях рождения. Однако компьютер
ная программа для моделирования задачи о почти днях рождения
так же проста, как программа для моделирования исходной задачи
о днях рождения. Схематично программа выглядит так. Ее исход
ной точкой является сформированная случайным образом группа
изmчеловек (без близнецов), такая, что каждый день года с рав
ной вероятностью может быть днем рождения для любого челове
ка из группы. Для простоты предполагается, что в году 365 дней
(исключаем 29 февраля). Для каждой из двух задач о днях рожде
ния производится очень большое число итераций программы.
В каждой итерации генерируютсяmслучайных чисел
случайное целое
представляет собой день рожденияi-го челове
g
i
gg
,,K
ка. Каждое из этих целых выбирается случайным образом из набо
,где
m1
-
-
-
-
-
-
-
-
-
-
-
-
-

150
Глава 5. Метод Монте-Карло и вероятности
ра
1365,,K
с помощью метода, описанного в подразделе 5.2.3. Для
классической задачи о днях рождения вы в каждой итерации про
веряете, существуют ли несовпадающие индексыiиjтакие, что
||,gg
-=0
ij
а для задачи о почти днях рождения вы проверяете, существуют ли
различные индексыiиjтакие, что
|| ||.gg gg
-£ -=1364или
ij ij
Вы получите оценку для искомой вероятности, разделив коли
чество итераций, для которых критерий проверки оказался удовлет
ворен, на общее количество итераций. Как видите, моделирующая
программа для задачи о почти днях рождения оказалась так же про
ста, как и программа для классической задачи о днях рождения.
5.3.3. Задача о лотерее
Чему равна вероятность получить два или более последовательных
числа, выбирая случайным образом шесть различных чисел из набора
от 1 до 45 в лотерее 6/45? Точное значение этой вероятности равно
40
æ
ö
ç
÷
ç
÷
6
è
ø
1
но доказательство этого факта далеко от простого. Однако эту ве
роятность, которая удивительно велика, можно легко и быстро
получить с помощью компьютерного моделирования. В каждой
итерации вы генерируете шесть лотерейных чисел, шесть раз при
менив алгоритм из подраздела 5.2.4 и взяв шесть целых чисел из
массива элементов
aa a[],[ ], ,[ ]45 44 40K
ли среди этих чисел два или более последовательных числа. Это
легко сделать, проверив, равна ли разность
каких-либоiиjиз диапазона
ятности равна отношению количества итераций, для которых кри
терий проверки удовлетворен, к общему количеству итераций.
Один миллион итераций дает оценку 0,5289. Внеся в эту програм
му небольшую модификацию, можно также найти вероятность
получить три или более последовательных числа. Компьютерное
= ,,
45
æ
ö
ç
÷
ç
÷
6
è
ø
40 45££ij,
0 5287-
. Далее вы проверяете, есть
ai a j[] [ ]-
1или-1для
. Оценка искомой веро
-
-
-
-
-
-
-
-
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
