Podemos resolver isso através de alguns "truques" e um pouco de matemática.
Aqui está o algoritmo básico:
- Gere uma variável aleatória geométrica com probabilidade de sucesso .p
- O resultado dessa variável aleatória determina um valor conhecido fixo .fn∈[0,1]
- Gere uma variável aleatória usando lançamentos justos de moedas gerados a partir de lançamentos emparelhados em blocos da nossa moeda B e r ( p ) .Ber(fn)Ber(p)
- O resultado resultante será para qualquer a ∈ ( 0 , 1 ) , que é tudo o que precisamos.Ber(pa)a∈(0,1)
Para tornar as coisas mais digeríveis, vamos dividir as coisas em pedaços.
Peça 1 : Sem perda de generalidade, assuma que .0<a<1
Se , então podemos escrever p a = p n p b para algum número inteiro positivo n e algum 0 ≤ b < 1 . Mas, para quaisquer dois Bernoulli independentes, temos
P ( X 1 = X 2 = 1 ) = p 1 p 2a≥1pa=pnpbn0≤b<1
Podemos gerar um p n Bernoulli da nossa moeda na maneira óbvia. Portanto, precisamos nos preocupar apenas em gerar B e r ( p a ) quando
P(X1=X2=1)=p1p2.
pnBer(pa) .
a∈(0,1)
Peça 2 : Saiba como gerar uma arbitráriapartir de lançamentos justos de moedas.Ber(q)
Existe uma maneira padrão de fazer isso. Expanda em sua expansão binária e, em seguida, use nossos lançamentos justos para "combinar" os dígitos de q . A primeira correspondência determina se declaramos um sucesso ("cara") ou falha ("coroa"). Se q n = 1q=0.q1q2q3…qqn=1 e nossa moeda jogar for cara, declare cara, se e nossa moeda jogar for coroa, declare coroa. Caso contrário, considere o dígito subsequente contra um novo lançamento de moeda.qn=0
Peça 3 : Saiba como gerar uma troca de moedas justa com as injustas com viés desconhecido.
Isso é feito, assumindo , lançando a moeda em pares. Se conseguirmos H T , declarar uma cabeça; se conseguirmos T Hp∈(0,1)HTTH , declarar uma coroa e repetir o experimento até que um dos dois resultados mencionados ocorra. Eles são igualmente prováveis, então deve ter probabilidade .1/2
Peça 4 : Um pouco de matemática. (Taylor para o resgate.)
Ao expandir torno de p 0 = 1 , o teorema de Taylor afirma que
p a = 1 - a ( 1 - p ) - a (h(p)=pap0=1
Note-se que porque 0 < um < 1 , cada prazo após o primeiro énegativa, de modo que temos
p um = 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
onde
0 ≤ b n ≤ 1 são conhecidos
a priori. Portanto
onde,epara.
pa=1−∑n=1∞bn(1−p)n,
0≤bn≤1L ~ L um e o m ( P1−pa=∑n=1∞bn(1−p)n=∑n=1∞bnP(G≥n)=∑n=1∞fnP(G=n)=Ef(G),
F 0 = 0 f n = Σ n k = 1 b k n ≥ 1G∼Geom(p)f0=0fn=∑nk=1bkn≥1
E já sabemos como usar nossa moeda para gerar uma variável aleatória geométrica com probabilidade de sucesso .p
Peça 5 : Um truque de Monte Carlo.
Seja uma variável aleatória discreta, levando valores em com . Deixe . Então
[ 0 , 1 ] P ( X = x n ) = p n U ∣ X ∼ b e r ( X ) P ( U = 1 ) = ∑ n x n p n .X[0,1]P(X=xn)=pnU∣X∼Ber(X)
P(U=1)=∑nxnpn.
Mas, considerando e , vemos agora como gerar uma variável aleatória e isso é equivalente a gerar uma um.x n = f n B e r ( 1 - p a ) B e r ( p a )pn=p(1−p)nxn=fnBer(1−pa)Ber(pa)