Я разместил следующую экспозицию этого вопроса и ответ кардинала на форуме общего обсуждения текущего класса Analytic Combinatorics на Coursera, "Применение степенных рядов для построения случайной величины". Я публикую здесь копию в вики сообщества, чтобы сделать ее общедоступной и более доступной.
На stat.stackexchange.com был интересный вопрос и ответ, связанный с степенными сериями: «Как генерировать нецелое количество последовательных успехов Бернулли?» Я перефразирую вопрос и ответ кардиналом.
Предположим, у нас есть, возможно, несправедливая монета, чьи головы с вероятностью , и положительное действительное число α . Как мы можем построить событие, вероятность которого равна p α ?pαpα
Если бы было положительным целым числом, мы могли бы просто перевернуть монетку α раз и позволить событию быть, что все броски были головами. Однако, если α не является целым числом, скажем , 1 / 2 , то это не имеет смысла, но мы можем использовать эту идею , чтобы снизить к случаю, когда 0 < α < 1 . Если мы хотим построить событие с вероятностью p 3,5 , мы берем пересечение независимых событий с вероятностями p 3 и p 0,5 .ααα1/20<α<1p3.5p3p0.5
Единственное, что мы можем сделать, - это построить событие с любой известной вероятностью . Чтобы сделать это, мы можем построить поток битов справедливым путем многократного листать монету в два раза, чтение H T , как 1 и Т Н в 0 , и игнорируя H H и T T . Мы сравниваем этот поток с бинарным разложением p ′ = 0. a 1 a 2 a 3 . , , 2p′∈[0,1]HT1TH0HHTTp′=0.a1a2a3...2, Случай, когда первое разногласие имеет место, когда имеет вероятность p ′ . Мы не знаем p α , поэтому мы не можем использовать это напрямую, но это будет полезный инструмент.ai=1p′pα
Основная идея заключается в том, что мы хотели бы использовать степенной ряд для гдер=1-кв. Мы можем построить событиячьи вероятностидплистать монетпраз ивидяесли они все хвосты, и мы можем произвести событие с вероятностьюр'длпутем сравнения двоичных разрядовр'с изрядной битового потокакак указано выше и проверка, все лиnброски являются хвостами.pα=(1−q)α=1−αq−α(1−α)2q2−α(1−α)(2−α)3!q3−...p=1−qqnnp′qnp′n
Построить геометрическую случайную величину с параметром p . Это количество хвостов перед первой головой в бесконечной последовательности бросков монет. P ( G = n ) = ( 1 - p ) n p = q n p . (Некоторые люди используют определение, которое отличается на 1. )GpP(G=n)=(1−p)np=qnp1
Принимая во внимание последовательность Мы можем изготовить т G : не Флип монеты до первой главы, и если есть G хвосты перед первой головкой, возьмите элемент последовательности индекса G . Если каждое t n ∈ [ 0 , 1 ] , мы можем сравнить t G с равномерной случайной величиной в [ 0 , 1 ] (построенной, как указано выше), чтобы получить событие с вероятностью E [ tt0,t1,t2,...tGGGtn∈[0,1]tG[0,1] .E[tG]=∑ntnP(G=n)=∑ntnqnp
Это почти то, что нам нужно. Мы хотели бы исключить это чтобы использовать степенной ряд для p α в q .ppαq
1=p+qp+q2p+q3p+...
qn=qnp+qn+1p+qn+2p+...
∑nsnqn==∑nsn(qnp+qn+1p+qn+2p+...)∑n(s0+s1+...+sn)qnp
Рассмотрим , Пустьtn- сумма коэффициентов отqдоqn. Тогда1-pα=∑ntnqnp. Каждоеtn∈[0,1],поскольку коэффициенты положительны и суммируются с1-0α=1, поэтому мы можем построить событие с вероятностью1-pα1−pα=αq+α(1−α)2q2+...tnqqn1−pα=∑ntnqnptn∈[0,1]1−0α=11−pαпутем сравнения справедливой битового потока с двоичного разложения . Дополнение имеет вероятность p α по мере необходимости.tGpα
Опять же, аргумент из-за кардинала.