Задача о разорении игрока

Материал из testwiki
Перейти к навигации Перейти к поиску

Задача о разорении игрока — задача из области теории вероятностей.

Траектории справедливой игры длиною 1000 шагов; коридор блуждания частицы обозначен горизонтальными линиями

Формулировка

За столом сидят два игрока. У первого в распоряжении находится A (A<0,A>0) рублей, у второго в распоряжении находится B (B>0) рублей. Перед ними на столе лежит асимметричная монета (вероятность, что выпадет аверс, может равняться любому числу от 0 до 1 включительно). Если на монете выпадает аверс, то рубль выигрывает первый игрок (второй игрок выплачивает первому 1 рубль), а если выпадает реверс, то первый игрок платит второму один рубль. Требуется найти вероятность того, что один из игроков проиграется в ноль за n шагов, и вероятность проигрыша каждого азартного игрока. Также необходимо вычислить среднюю длину игры.

Данная ситуация может быть смоделирована подобным образом: имеется блуждающая частица и коридор [A;B]. Рассматривается вероятность того, что частица выйдет из коридора за n шагов (проскочит через верхнюю или нижнюю стенку).

Схема Бернулли

Рассмотрим схему Бернулли с n испытаниями.

Пусть (Ω,𝒜,) — вероятностное пространство, где

В выражении выше число выпавших единиц можно найти так: ν(ω)=i=1nxi+n2.

Введём последовательность бернуллиевских случайных величин:

i=1;n,ξi(ω):({ξi=1})=p,({ξi=1})=q,p+q=1.

Подзадача о нормированности вероятности

Доказать, что ωΩ({ω})=1.


Решение

ωΩ({ω})=ωΩpi=1nxi+n2qni=1nxi+n2=k=0nωAkpi=1n(xi+1)2qi=1n(1xi)2=k=0nCnkpkqnk. Это справедливо в силу того, что xi+12{0;1}.

k=0nCnkpkqnk=(p+q)n=1, поскольку по условию p+q=1.

Подзадача о независимости случайных величин ξi

Доказать, что ξ1 и ξ2 независимы.


Решение

Независимость случайных величин означает, что

({ξ1=1}{ξ2=1})=({ξ1=1})({ξ2=1}),

покажем это:

({ξ1=1}{ξ2=1})=({ω:ω=(x1;;xn), x1=1, x2=1})=
=x3=±1xn=±1p2+i=3nxi+n2qn2+i=3nxi+n2=p2x3=±1xn=±1pi=3nxi+(n2)2q(n2)i=3nxi+(n2)2=p21.

Случайное блуждание

Для схемы Бернулли договоримся о следующем смысле случайной величины ξ: ξi=+1 означает, что второй игрок платит первому, а ξi=1 – первый игрок второму.

Введём новое обозначение:

S0=0, Sk=ξ1++ξk,1kn.

Число n равно длительности игры, а последовательность (Sk)kn можно рассматривать как траекторию случайного блуждания некоторой частицы, выходящей из нуля, при этом очевидно равенство Sk+1=Sk+ξk+1, а само Sk означает выигрыш первого игрока у второго (который может быть отрицательным).


Пусть A, B — два целых числа, A0, B0. Требуется найти, с какой вероятностью за n шагов будет осуществлён выход частицы из коридора, ограниченного A и B.

Далее, пусть x — целое число, x[A;B]. Пусть также для 0kn верно, что Skx=x+Sk (что означает, что игроки начинали играть с ненулевым капиталом в распоряжении). Пусть τkx=min{l:0lk,Slx={AorB}}. Условимся считать, что τkx=k, если A<Slx<Bl:0lk. Если частица так и не пересекла границы, то xk не определён.

Для каждого 0kn и x[A;B] момент τkx называется моментом остановки, который является случайной величиной, определённой на пространстве элементарных событий Ω. l<k{ω:τkx=l} — это событие, состоящее в том, что случайное блуждание {Six:0ik}, начинающееся в точке x, выйдет из интервала [A;B] в момент l. Введём новые обозначения: 𝒜kx=0lk{ω:τkx=l, Slx=A}, kx=0lk{ω:τkx=l, Slx=B} для 0kn. Пусть αk(x)=(𝒜kx), βk(x)=(kx) — вероятности выхода частицы за время [0;k] из интервала [A;B] соответственно в точках A и B.

Пусть A<x<B; очевидно, что α0(x)=β0(x)=0 (пока игра не началась, частица находится внутри интервала с вероятностью 1). Пусть теперь 0kn. Тогда по формуле полной вероятности βk(x)=(kx)=(kxS1x=x+1)({ξ1=1})+(kxS1x=x1)({ξ1=1}).

Подзадача о рекуррентности

Доказать, что

(1) (kxS1x=x+1)=(k1x+1),

(2) (kxS1x=x1)=(k1x1).

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

(1) Докажем, что (kxS1x=x+1)=(k1x+1).

kx={ω:(x;x+ξ1;;x+ξ1++ξk)Bkx}, где Bkx — множество траекторий вида (x;x+x1;;x+x1++xk),xi=±1, которые за время [0;k] впервые выходят из интервала (A;B) в точке B (показано на рисунке). Если случайный вектор попадает в подходящую траекторию, то он попадает в множество . Представим множество Bkx как Bkx;x+1Bkx;x1. Дизъюнктное объединение правомерно по причине того, что у любой частицы, проходящей по траектории, x1=±1. Bkx;x+1 — те траектории из Bkx, для которых x1=1. Bkx;x1 — те траектории из Bkx, для которых x1=1. Заметим, что каждая траектория (x;x+1;x+1+x2;;x+1+x2++xk) из Bkx;x+1 находится в однозначном соответствии с траекторией (x+1;x+1+x2;;x+1+x2++xk) из Bk1x+1. Взаимно-однозначное соответствие доказывается от противного. Предположим, что x1=1 (неоднозначное соответствие); тогда данная траектория (x;x1;x1+x2;;x1+x2++xk) не сможет вывести частицу из коридора за k шагов (а только лишь за k+2 из-за изначального отдаления от верхней стенки коридора). В обратную сторону соответствие является также однозначным из определения: Sk+1=Sk+ξk+1. Из этого следует, что ({(x+1;x+1+x2;;x+1+x2++xk)Bk1x+1})=({(x+1;x+1+x1;;x+1+x1++xk1)Bk1x+1})=def(k1x+1) (так как ξi суть независимые одинаково распределённые случайные величины).

Существует и другой способ доказательства:

(kxS1x=x+1)=(kxξ1=1)=((x;x+ξ1;;x+ξ1++ξk)Bkxξ1=1)=
=((x;x+ξ1;;x+ξ1++ξk)Bkxξ1=1)({ξ1=1})=((x;x+1;;x+1++ξk)Bkxξ1=1)({ξ1=1})=
=({(x;x+1;x+1+ξ2;;x+1+ξ2++ξk)Bkx})=({(x;x+1;x+1+ξ1;;x+1+ξ1++ξk1)Bkx})=
=({(x;x+1;x+1+ξ1;;x+1+ξ1++ξk1)Bk1x+1})=(k1x+1)=βk1(x+1).

Это справедливо потому, что вероятности независимы (это было доказано ранее).


(2) Аналогично докажем, что (kxS1x=x1)=(k1x+1).

Каждая траектория (x;x1;x1+x2;;x1+x2++xk) из Bkx;x+1 находится в однозначном соответствии с траекторией (x1;x1+x2;;x1+x2++xk) из Bk1x1. Отсюда ({(x1;x1+x2;;x1+x2++xk)Bk1x1})=({(x1;x1+x1;;x1+x1++xk1)Bk1x1})=def(k1x1).

Вывод рекуррентного соотношения

Из уравнения для βk(x) следует, что для x(A;B) и kn верно:

(kx)=(kxS1x=x+1)p+(kxS1x=x1)q=(k1x+1)p+(k1x1)q=pβk1(x+1)+qβk1(x1).

βl(B)=1, βl(A)=0 для l[0;n].


Формула полной вероятности также даёт нам следующий результат: αk(x)=pαk1(x+1)+qαk1(x1).


Также отметим, что k1k, и поэтому βk1(x)βk(x)1 для kn. Это утверждение верно, так как к любой траектории, выводящей частицу за меньшее количество шагов, можно прибавить в начало один шаг (xj1=±1), на котором частица может прийти в точку (j;Sjx) как из (j1;Sjx1) (для ξj=1), так и из (j1;Sjx+1) (jk).

Нахождение вероятностей

При достаточно больших n вероятность βn(x) близка к β(x) — решению уравнения β(x)=pβ(x+1)+qβ(x1) при тех условиях, что β(B)=1 (выход произошёл сразу же из точки B — конец игры, выиграл первый игрок), β(A)=0 (первый игрок никогда не выиграет, если выход произойдёт мгновенно в точке A). Эти условия следуют из того, что lim\limits lβl(B)=β(B). Это также будет доказано в этом разделе.

Сначала получим решение уравнения β(x)=pβ(x+1)+qβ(x1). Пусть игра несправедливая (pq). В таком случае найдём корни уравнения, то есть β(x). Одно частное решение видно сразу: β(x)=const=a. Другое решение найдём, воспользовавшись тем, что β(x) — функция. Целесообразно употребить выражение с отношением qp, учитывая, что p+q=1: (qp)x=qx(p+q)px=qxpx1+qx+1px=pqx+1px+1+qqx1px1=p(qp)x+1+q(qp)x1. Отсюда правомерно предположить, что β(x)=b(qp)x. Добавление константы ничего не изменит благодаря тому, что p+q=1.

Теперь рассмотрим общее решение: β(x)=a+b(qp)x. Воспользуемся теми условиями, что β(A)=a+b(qp)A=0 и β(B)=a+b(qp)B=1, и получим, что β(x)=β(x)010=β(x)β(A)β(B)β(A)=a+b(qp)x(a+b(qp)A)a+b(qp)B(a+b(qp)A)=(qp)x(qp)A(qp)B(qp)A.

Подзадача о единственности решения

Докажем единственность решения данной задачи. Для этого покажем, что любое решение задачи β(x)=pβ(x+1)+qβ(x1) с граничными условиями может быть представлено в виде (qp)x(qp)A(qp)B(qp)A.


Решение

Рассмотрим некоторое решение βˇ(x) при условиях βˇ(A)=0, βˇ(B)=1. Тогда всегда можно подобрать такие константы aˇ и bˇ, что aˇ+bˇ(qp)A=βˇ(A), aˇ+bˇ(qp)A+1=βˇ(A+1). Тогда из уравнения поставленной задачи следует, что βˇ(A+2)=aˇ+bˇ(qp)A+2. Тогда в общем случае βˇ(x)=aˇ+bˇ(qp)x. Следовательно, решение (qp)x(qp)A(qp)B(qp)A является единственным. Точно такой же ход рассуждений может быть применён и к α(x).

Предельная сходимость

Рассмотрим вопрос о быстроте предельной сходимости αn(x) и βn(x) к α(x) и β(x). Пусть блуждание начинается из начала координат (x=0). Для простоты обозначим αn(0)=αn, βn(0)=βn, γn=1αnβn. Иными словами, γn — это единица минус сумма вероятностей выхода частицы из коридора — вероятность того, что она останется блуждать в коридоре: γn={ω:A<Sk<B;0kn}. ω представляет собой событие 0kn{A<Sk<B}. Рассмотрим число n=rm, где r,m, и цепочку случайных величин ζn:ζ1=i=1mξi,ζ2=i=m+12mξi,,ζr=i=m(r1)rmξi. Если обозначить совокупное богатство за C=|A|+B, то тогда {A<Sk<B;1krm}{|ζ1|<C;;|ζr|<C}. Этому есть разумное объяснение: если частица выходит из нуля и не пересекает границ, то тогда совершенно определённо сумма m штук xi меньше, чем совокупный запас.

Подзадача о независимости случайных величин ζi

Докажем, что ζj независимы и одинаково распределённые. Достаточно доказать, что они независимы, так как все они имеют биномиальное распределение.


Решение

Докажем, что ({ζ1=m}{ζ2=m})=({ζ1=m})({ζ2=m}).

({ζ1=m}{ζ2=m})=({i=1mξi=m}{i=m+12mξi=m})=
=({ξ1;;m=1}{ξm+1;;2m=1})=2m({ξi=1})=({ζ1=m})({ζ2=m}).


Вернёмся к рассмотрению сходимости.

Из только что доказанного следует что γn({|ζ1|;;|ζr|<C})=i=1r({|ζi|<C})=(({|ζ1|<C}))r.

Рассмотрим дисперсию: Var(ζ1)=m(1(pq)2) (что вполне правомерно, так как 1(pq)2=1((p+q)24pq), а ξ — модифицированная бернуллиевская случайная величина), поэтому для достаточно больших m и 0<p<1 верно: ({|ζ1|<C})ε1, где ε1<1, так как если ({|ζ1|C})=1, то Var(ζ1)C2. Если p=0 или p=1, то для довольно больших m верно, что ({|ζ1|<C})=0, поэтому неравенство ({|ζ1|<C})ε1 верно p[0;1]. Из вышесказанного следует, что γnεn, где ε=ε11m<1. Так как α+β=1, то (ααn)(ββn)=γn; так как ααn и ββn, то 0ααnγnεn; 0ββnγnεn при ε<1. Аналогичные оценки справедливы и для разностей α(x)αn(x) и β(x)βn(x), так как можно свести эти разности к разностям ααn и ββn при A1=Ax, B1=Bx.

Вернёмся к рассмотрению α(x). По аналогии с решением (qp)x(qp)A(qp)B(qp)A уравнения β(x)=pβ(x+1)+qβ(x1), можно сказать, что у уравнения α(x)=pα(x+1)+qα(x1) при граничных условиях α(A)=1, α(B)=0 существует единственное решение α(x)=(qp)B(qp)x(qp)B(qp)A,AxB.

Нетрудно заметить, что α(x)+β(x)=(qp)B(qp)x(qp)B(qp)A+(qp)x(qp)A(qp)B(qp)A=(qp)B(qp)A(qp)B(qp)A=1 при любых p[0;1]. Если же игра является справедливой (вероятность выпадения аверса равна вероятности выпадения реверса), то решения будут выглядеть следующим образом: β(x)=xABA, α(x)=BxBA.

Ответ о вероятности разорения

Величины α(x) и β(x) можно назвать вероятностями разорения первого и второго игрока при начальных капиталах xA и Bx при стремлении количества ходов к бесконечности и характеризации случайной величина ξi=+1 как выигрыша первого игрока, а ξi=1 — проигрыша первого игрока. В дальнейшем будет показано, почему такую последовательность действительно можно построить.

Если A=0, то интуитивный смысл функции β(x) — это вероятность того, что частица, вышедшая из положения x, достигнет верхней стенки (B) ранее, чем нуля. Из формул β(x) видно, что

β(x)={xB,p=q=0,5,(qp)x1(qp)B1,pq.

Парадокс увеличения ставки при неблагоприятной игре

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

Его вероятность проигрыша задана формулой lim\limits kαk=α=(qp)B1(qp)B(qp)A.


Теперь пусть первый игрок с капиталом (A) примет решение удвоить ставку и играть на два рубля, то есть ({ξi=2})=p, ({ξi=2})=q. Тогда обозначим предельную вероятность разорения первого игрока так: α2=(qp)0,5B1(qp)0,5B(qp)0,5A.

Поэтому α=(qp)0,5B212(qp)0,5B2(qp)0,5A2=((qp)0,5B1)((qp)0,5B+1)((qp)0,5B(qp)0,5A)((qp)0,5B+(qp)0,5A)=α2((qp)0,5B+1)((qp)0,5B+(qp)0,5A)>α2, так как α2 умножается на дробь, которая больше единицы при q>p.


Поэтому если вероятность выпадения столь желанного для первого игрока аверса меньше 0,5, то ему выгодно увеличить ставку в r>1 раз: это уменьшает вероятность его терминального разорения за счёт того, что вырастает вероятность выскочить из коридора в точке B. Это решение кажется парадоксальным, так как складывается впечатление, что при неблагоприятной ситуации надо снизить ставку и уменьшить проигрыш, но в действительности при бесконечном числе игр и низкой ставке проигрывающий игрок в конечном счёте обязательно проиграется в ноль, а игрок с высокой ставкой обладает большими шансами выпадения количества аверсов, достаточного для завершения игры в точке B.

Длительность случайного блуждания

Рассмотрим среднюю длительность блуждания нашей частицы. Введём математическое ожидание момента, когда игра прекращается: 𝔼(τkx)=mk(x) для kn. Выведем рекуррентное соотношение для математического ожидания продолжительности игры:

mk(x)=𝔼(τkx)=1lkl({τkx=l})=1lkl(p({τkx=l}|{ξ1=1})+q({τkx=l}|{ξ1=1}))=
=1lkl(p({τk1x+1=l1})+q{τk1x1=l1}))=0lk1(l+1)(p({τk1x+1=l})+q({τk1x1=l}))=
=pmk1(x+1)+qmk1(x1)+0lk1(p({τk1x+1=l})+q({τk1x1=l}))=pmk1(x+1)+qmk1(x1)+1.

Для x(A;B) и k[0;n] мы получили рекуррентное соотношение для функции mk(x): mk(x)=pmk1(x+1)+qmk1(x1)+1 при m0(x)=0.


Введём граничные условия: если игра начинается в точке A или B, то тогда она тут же и завершится — её длительность будет равна 0: mk(A)=mk(B)=0.


Из рекуррентного соотношения и граничных условий можно один за другим вычислить mi(x). Так как mk+1(x)mk(x), то существует предел m(x)=lim\limits nmn(x), который удовлетворяет соотношению mk(x)=pmk1(x+1)+qmk1(x1)+1: m(x)=1+pm(x+1)+qm(x1) при выполнении m(A)=m(B)=0. Данные переходы аналогичны тем, что мы рассмотрели при переходе к n в уравнении вероятности проигрыша. Для того чтобы решить данное уравнение, надо ввести ещё одно условие: матожидание количества ходов должно быть конечным, то есть m(x)<, x(A;B).


Решим данное уравнение. В уравнении вероятности проигрыша (pq) уже были получены частные решения a и b(qp)x. Здесь же появляется ещё один претендент на роль частного решения: xqp=qp+(p+q)x+pqqp=qpqp+p(x+1)qp+q(x1)qp=1+px+1qp+qx1qp, поэтому m(x)=xqp+a+b(qp)x. С учётом граничного условия m(A)=m(B)=0 находим при помощи ранее полученных соотношений m(x): m(x)=1pq(Bβ(x)+Aα(x)x). В случае идеальной монетки получаем следующее выражение: m(x)=a+bxx2. Применение граничного условия даёт: m(x)=(Bx)(xA). Из этого следует, что в случае равных стартовых капиталов m(0)=B2. Например, если у каждого игрока есть по 5 рублей, а ставка — 1 рубль, то в среднем разоряться игроки будут через 25 ходов.

При рассмотрении вышеуказанных формул подразумевалась конечностью математического ожидания числа ходов: m(x)<. Теперь будет предложено доказательство этого факта.

Задача о конечности ожидаемого числа ходов

Доказать, что m(x)<A,B.


Решение

Достаточно доказать это для случая x=0 (так как ранее было уже продемонстрировано, что случаи x0 могут быть сведены к x=0 вариацией A и B) и p=q, а затем рассмотреть случай pq.

Итак, рассмотрим последовательность S0;1;;n и введём случайную величину Sτn=Sτn(ω), где τn=τn0 — момент остановки.

Пусть Sτn(ω)=k=0nSk(ω)𝟏{τn=k}(ω). Интерпретация такова: Sτn — это значение случайного блуждания в момент τn. Если τn<n, то Sτn{A;B}; если τn=n, то ASτnB. Вспомним, что p=q=0,5, и докажем, что 𝔼(Sτn)=0, 𝔼(Sτn2)=𝔼(τn).


Для доказательства первого равенства напишем: 𝔼(Sτn)=k=0n𝔼(Sk𝟏{τn=k}(ω))=k=0n𝔼(Sn𝟏{τn=k}(ω))+k=0n((SkSn)𝟏{τn=k}(ω))=𝔼(Sn)+k=0n((SkSn)𝟏{τn=k}(ω)). Совершенно очевидно, что 𝔼(Sn)=0, так как Sn=ξ1++ξn, ξi=±1 при p=q. Осталось доказать, что k=0n((SkSn)𝟏{τn=k}(ω))=0.

Для 0k<n справедливо, что {τn>k}={A<S1<B;;A<Sk<B}. Последнее событие может быть представлено в виде {ω:(ξ1;;ξn)J}, где J — некоторое подмножество множества {1;+1}k. Это множество определяется только ξi при i=1;k. Для больших i значения ξk+1;;ξn не влияют на J. Множество вида {τn=k}={τn>k1}{τn>k} также может быть представлено в виде {ω:(ξ1;;ξn)J}. Благодаря независимости ξi (доказано в подзадаче 2) вытекает, что 0k<n случайные величины SnSk и 𝟏{τn=k} независимы. Отсюда 𝔼(Sk𝟏{τn=k}(ω))=𝔼(Sk)𝔼(𝟏{τn=k}(ω))=0 в силу того, что первый множитель нулевой.

𝔼(Sτn2)=k=0n𝔼(Sk2𝟏{τn=k})=
=k=0n𝔼((Sn+(SkSn)2)𝟏{τn=k})=k=0n(𝔼(S2)𝟏{τn=k}+2𝔼(Sn(SkSn))𝟏{τn=k}+𝔼((SnSk)2)𝟏{τn=k})=
=𝔼(S2)k=0n𝔼((SnSk)2)𝟏{τn=k}=nk=0n𝔼(nk)({τn=k})=k=0nk({τn=k})=𝔼(τn).

Установлено, что для идеальной монетки 𝔼(Sτn)=0, 𝔼(Sτn2)=𝔼(τn).

В случае же pq имеют место соотношения 𝔼(Sτn)=(pq)𝔼(τn) (поскольку 𝔼(ξ1)=pq) и 𝔼((Sτnτn𝔼(ξ1))2)=Var(ξ1)𝔼(τn), поскольку Var(ξ1)=1(pq)2. Теперь покажем, что lim\limits nmn(0)=m(0)<.

В случае справедливой игры в силу соотношения 𝔼(Sτn2)=𝔼(τn) верно, что 𝔼(τn)max{A2;B2}. Тогда же 𝔼(τn)=𝔼(Sτn2)=A2αn+B2βn+𝔼(Sn2𝟏{A<Sn<B})𝟏{τn=n}, поэтому A2αn+B2βn𝔼(τn)A2αn+B2βn+max{A2;B2}γn. Из неравенства γn<εn следует, что математическое ожидание 𝔼(τn) сходится при n к предельному значению m(0)=A2α+B2β=A2BBAB2ABA=|AB|. В случае несправедливой игры 𝔼(τn)max{|A|;B}|pq|. Так как за τn обозначался момент первого вылета частицы за пределы коридора, то математическое ожидание его меньше определённых чисел, следовательно, меньше бесконечности. При таком условии 𝔼(τn)m(0)=αA+βBpq.

Компьютерное моделирование (метод Монте-Карло)

Для моделирования игры воспользуемся программой MATLAB.

Для начала сгенерируем последовательность ξi, а затем при некотором первоначальном богатстве x создадим цепочку Sk:

Последовательность ξ (getXI)

n = 100;                             % The length of \xi_i series
U = rand(n,1);                       % Generate 100 random uniform [0;1] values
XI = zeros(n,1);                     % Reserve memory for 100 modified Bernoulli
q = 0.55;                            % Reverse probability
p = 1 - q;                           % Averse probability

                                     % The following cycle creates a Bernoulli distribution based on uniform [0;1]
for i = 1:n                          % This cycle divides the [0;1] array into 2 parts: lengths q and p, q+p=1
   if (U(i,1) < q)                        
       XI(i,1) = -1;                 % If a uniform random value falls into q then \xi=-1
   else XI(i,1) = 1;                 % If a uniform random value falls into p then \xi=+1
   end
end

x = 10;                              % Initial 1st player's budget offset

S = zeros(n,1);                      % Reserve memory for 100 S_1...S_100

for i = 1:n                          % Make S_k series according to rule S_{k+1} = S_k + \xi_{k+1}
    S(i,1) = x + sum(XI(1:i, 1));    % considering the initial welfare offset x
end

Затем введём функцию getS(n, q, x), которая бы не просто, как листинг выше, генерировала ряд Sk сразу и мгновенно, а позволяла бы обобщённо на основе введённых значений n, q и x построить ряд, не усложняя вычислений. Это бы упростило рабочую область.

Генерация ряда (getS function)

function [S] = getS(n, q, x)         % This function depends on n, q and x --- 3 variables
U = rand(n,1);
XI = zeros(n,1);

for i = 2:n                          % Uniform->Bernoulli distribution transformation
   if (U(i,1) < q)
       XI(i,1) = -1; 
   else XI(i,1) = 1;
   end
end

S = zeros(n,1);                      % Reserve memory for n S_1...S_n

for i = 2:n                          % Calculate the S_1...S_n series
    S(i,1) = sum(XI(1:i, 1));        % Sums the \xi's
end
S = x + S;                           % Adds initial welfare to each S_k of the whole matrix

Возникает разумный вопрос: зачем считать ξ, начиная только со второй величины (for i = 2:n)? Дело в том, что это делается исключительно в целях наглядной визуализации. При построении графика в следующем коде будут строиться траектории Sk, и если бы было написано for i = 1:n, то тогда уже с самого первого значения некоторые траектории бы выходили из x1, некоторые — из x+1. Так как в данной программе из соображений оптимальности лучше не задействовать нулевое значение (из него частица выходит, но не рисуется, так как прибавление ξ1 происходит сразу), то просто-напросто сдвинем нумерацию на оси абсцисс на единицу вправо. Теперь проведём серию тестов и наглядно рассмотрим возможные траектории при некоторых вероятностях, длинах игры и количестве игр.

Визуализация (graphS)

Три игры в 10 шагов при q=0,45.
Пять игр в 100 шагов при q=0,56. Видно, что частицу «тянет вниз» к точке A.
Сто справедливых игр в 10000 шагов.
N = 3;                               % Number of games played
n = 10;                              % Number of tosses
q = 0.45;                            % Chance 1st player loses 1 rouble
x = 0;                               % Initial welfare offset

matrS = zeros(N, n);                 % Reserve memory for N rows n cols matrix
for i = 1:N                          % This loop fills the S matrix with S_k, yielding N trajectories
    matrS(i,:) = getS(n, q, x)';
    plot(matrS(i,:));                % Gives an image
    hold on;                         % Holds the axes for next trajectory overlay
end
hold off;                            % Clears axes for a new plot

Теперь подойдём к самой главной составляющей программной части — алгоритму, который позволил бы вычислять среднюю длину игры при заданных параметрах (A;B;n;q). Если теория верна, то нижеследующий эксперимент её лишь подтвердит. Также допишем в программу строчку, которая будет вычислять вероятность разорения первого игрока (β(x)) при заданных начальных капиталах и сопоставлять её с теоретической.

Полная модель игры (Monte_Carlo)

N = 3000;                                 % Number of games played
n = 3000;                                 % Number of tosses
q = 0.5;                                  % Chance 1st player loses 1 rouble
p = 1-q;                                  % Chance 1st player wins 1 rouble
A = -10;                                  % 1st player budget
B = 10;                                   % 2nd player budget
x = 0;                                    % Budget offset towards 1st player
Bs = 0;                                   % amount of cases particle hits B (it will change soon)
As = 0;                                   % amount of cases particle hits A (it will change soon)

matrS = zeros(N, n);                      % Reserve memory for N rows n cols matrix
TAU1 = n * ones(N, n);                    % Fill another N rows n cols matrix with n's
for i = 1:N                               % This loop makes up N trajectories of S_k relying on input q, x, n
  matrS(i,:) = getS(n, q, x)';
  for j = 1:n
      if (matrS(i,j) == A)||(matrS(i,j) == B) % If a particle exceeds A or B, then
      TAU1(i,j) = j;                          % put the number of step into the table
      end
  end
  plot(matrS(i,:));                       % Displays a figure
  grid on;
  hold on;                                % Simultaneous plots within same axes
end
hold off;                                 % Clears axes for a new plot

TAU = (min(TAU1'))';                      % TAU = earliest step of [A;B] corridor overrun

% As [min] affects columns and gives row then we transpose TAU1,
% minimize it by rows and make it a column again
for i = 1:N                               % Our S_n series are ready; they nest in matrS
    for j=1:TAU(i)                        % Scan only till we encounter the escape step!
        if (matrS(i,j) == A);             % If a particle escaped through A (1st player busted)
        As = As+1;                        % then add +1 to 1st player's failures
        elseif (matrS(i,j) == B)          % Otherwise if its first threshold was B
        Bs = Bs+1;                        % then add +1 to 1st player's wins
        end                               % If n is not large enough, then
    end                                   % As + Bs may not make up N
end
ALPHA = As/(As+Bs)                        % Match alphas with their theoretical values
if (q == p)
   THEORALPHA = (B-x)/(B-A)
else THEORALPHA = ((q/p)^B - (q/p)^x)/((q/p)^B - (q/p)^A)
end
BETA = 1-ALPHA                            % Same for betas
if (q == p)
   THEORBETA = (x-A)/(B-A)
else THEORBETA = 1-THEORALPHA
end
meanTAU = mean(TAU)                       % Law of large numbers for great N's
if (q == p)
   THEORTAU = (B-x)*(x-A)
else THEORTAU = 1/(p-q)*(B*THEORBETA+A*THEORALPHA-x)
end

Отметим, что при небольших n не все частицы вылетают из коридора, поэтому здесь надо подчеркнуть, что теория говорит: «при достаточно больших n вероятность βn(x) близка к β(x)».

Тестирование

Нижеследующие данные рассчитаны для n=3000, N=3000.

№ теста q A B x ALPHA α(x) BETA β(x) meanTAU m(x)
1 0,49 6 5 0 0,4020 0,4006 0,5980 0,5994 30,9307 29,6856
2 0,6 60 6 3 0,9733 0,9740 0,0267 0,0260 278,2200 276,4159
3 0,6 20 2 1 0,7040 0,7038 0,2960 0,2962 62,2680 62,4178
4 0,54 10 50 10 0,9990 0,9984 0,0010 0,0016 251,3587 248,8205
5 0,5 10 20 0 0,6580 0,6667 0,3420 0,3333 202,3007 200,0000
6 0,35 3 90 0 0,1457 0,1561 0,8543 0,8439 256,4557 251,6022

В экспериментах 2 и 3 продемонстрировано свойство: если игра проигрышная для первого игрока, то увеличение ставки в модели эквивалентно сокращению A, B и x в одно и то же число раз относительно нуля. Ставка увеличилась втрое — вероятность выскочить из коридора со значением B выросла в 11 раз!

См. также

Примечания

Шаблон:Примечания