Podemos resolver esto mediante un par de "trucos" y un poco de matemática.
Aquí está el algoritmo básico:
- Generar una variable aleatoria geométrica con probabilidad de éxito p .
- El resultado de esta variable aleatoria determina un valor conocido fijo fn∈[0,1] .
- Genere una variable aleatoria Ber(fn) utilizando lanzamientos de moneda justos generados a partir de lanzamientos emparejados en bloque de nuestra moneda Ber(p) .
- El resultado resultante será Ber(pa) para cualquier a∈(0,1) , que es todo lo que necesitamos.
Para hacer las cosas más digeribles, las dividiremos en pedazos.
Pieza 1 : Sin pérdida de generalidad, suponga que 0<a<1 .
Si , entonces, podemos escribir p a = p n p b para algún número entero positivo n y algunos 0 ≤ b < 1 . Pero, para cualesquiera dos Bernoulli independientes, tenemos
P ( X 1 = X 2 = 1 ) = p 1 p 2a≥1pa=pnpbn0≤b<1
P(X1=X2=1)=p1p2.
Podemos generar un
pn Bernoulli de nuestra moneda de la manera obvia. Por lo tanto, solo debemos preocuparnos por generar
Ber(pa) cuando
a∈(0,1) .
Pieza 2 : saber cómo generar un arbitraria Ber(q) de la moneda al aire voltea.
Hay una forma estándar de hacer esto. Expande q=0.q1q2q3… en su expansión binaria y luego usa nuestros lanzamientos de monedas para "igualar" los dígitos de q . La primera coincidencia determina si declaramos un éxito ("cara") o un fracaso ("cruz"). Si qn=1 y nuestro lanzamiento de moneda es cara, declare cara, si qn=0 y nuestro lanzamiento de moneda es cruz, declare cruz. De lo contrario, considere el dígito posterior contra un nuevo lanzamiento de moneda.
Pieza 3 : Sepa cómo generar un lanzamiento de moneda justo a partir de los injustos con sesgo desconocido.
Esto se hace, suponiendo p∈(0,1) , volteando la moneda en pares. Si obtenemos HT , declare un cara; si obtenemos TH , declaramos una cola y, de lo contrario, repite el experimento hasta que ocurra uno de los dos resultados antes mencionados. Ellos son igualmente probables, así que deben tener probabilidad 1/2 .
Pieza 4 : Algunas matemáticas. (Taylor al rescate).
Al expandir alrededor de p 0 = 1 , el teorema de Taylor afirma que
p a = 1 - a ( 1 - p ) - a ( 1 - a )h(p)=pap0=1
Tenga en cuenta que debido a que 0 < a < 1 , cada término después del primero esnegativo, por lo que tenemos
p a = 1 - ∞ ∑ n = 1 b n ( 1 - p ) n
pa=1−a(1−p)−a(1−a)2!(1−p)2−a(1−a)(2−a)3!(1−p)3⋯.
0<a<1
donde
0 ≤ b n ≤ 1 se conocen
a priori. Por lo tanto,
1 - p a = ∞ ∑ n = 1 b n ( 1 - p ) n = ∞ ∑ n = 1 b n P ( G ≥ n ) = ∞ ∑ n = 1 f n P ( G = n ) = Epa=1−∑n=1∞bn(1−p)n,
0≤bn≤1
donde
G ~ G e o m ( p ) ,
f 0 = 0 y
f n = Σ n k = 1 b k para
n ≥ 1 .
1−pa=∑n=1∞bn(1−p)n=∑n=1∞bnP(G≥n)=∑n=1∞fnP(G=n)=Ef(G),
G∼Geom(p)f0=0fn=∑nk=1bkn≥1
Y, ya sabemos cómo usar nuestra moneda para generar una variable aleatoria geométrica con probabilidad de éxito .p
Pieza 5 : Un truco de Monte Carlo.
Sea una variable aleatoria discreta que toma valores en [ 0 , 1 ] con P ( X = x n ) = p n . Deje U ∣ X ∼ B e r ( X ) . Entonces
P ( U = 1 ) = ∑ n x n p n .X[0,1]P(X=xn)=pnU∣X∼Ber(X)
P(U=1)=∑nxnpn.
Pero, tomando y x n = f n , ahora vemos cómo generar una variable aleatoria B e r ( 1 - p a ) y esto es equivalente a generar una B e r ( p a ) uno.pn=p(1−p)nxn=fnBer(1−pa)Ber(pa)