Podemos resolver esto a través de un par de "trucos" y un poco de matemáticas.
Aquí es el algoritmo básico:
- Generar una variable aleatoria Geométrica con probabilidad de éxito $p$.
- El resultado de esta variable aleatoria que determina un fijo conocido el valor de $f_n \in [0,1]$.
- Generar un $\mathrm{Ber}(f_n)$ variable aleatoria utilizando la feria de la moneda para decidir generados a partir de blockwise emparejado volteretas de nuestra $\mathrm{Ber}(p)$ moneda.
- El resultado va a ser $\mathrm{Ber}(p^a)$ cualquier $a \in (0,1)$, que es todo lo que necesitamos.
Para hacer las cosas más fáciles de asimilar, vamos a romper cosas en pedazos.
Pieza 1: Sin pérdida de generalidad supongamos que $0 < a < 1$.
Si $a \geq 1$, entonces, podemos escribir $p^a = p^n p^b$ para algún entero positivo $n$ y algunos $0 \leq b < 1$. Pero, para cualquiera de los dos de Bernoulli independientes, tenemos
$$\renewcommand{\Pr}{\mathbb P}
\Pr(X_1 = X_2 = 1) = p_1 p_2 \>.
$$
Podemos generar un $p^n$ de Bernoulli a partir de nuestra moneda en la manera obvia. Por lo tanto, sólo tenemos que ocuparnos de la generación de la $\mathrm{Ber}(p^a)$ al $a \in (0,1)$.
Pieza 2: Saber cómo generar un arbitrario $\mathrm{Ber}(q)$ fair coin flips.
No hay una manera estándar de hacer esto. Expandir $q = 0.q_1 q_2 q_3 \ldots$ en su binario de expansión y, a continuación, utilizar nuestra feria de la moneda gira para "igualar" los dígitos de $q$. El primer partido que se determina si declaramos un éxito ("cabeza") o el fracaso ("colas"). Si $q_n = 1$, y el tirón de la moneda es la cabeza, declarar cabezas, si $q_n = 0$, y el tirón de la moneda es de las colas, a declarar colas. De lo contrario, considere la posibilidad de la posterior dígitos en contra de un nuevo tirón de la moneda.
Pieza 3: Sepa cómo se generan una gran tirón de la moneda de lo injusto con desconocidos sesgo.
Esto se hace, asumiendo $p \in (0,1)$, por voltear la moneda en pares. Si conseguimos $HT$, declare la cabeza; si conseguimos $TH$, declara una de las colas, y en caso contrario, repetir el experimento hasta que uno de los dos anteriores resultados se produce. Son igualmente probables, por lo que debe tener la probabilidad de $1/2$.
Pieza 4: Algunos de matemáticas. (Taylor para el rescate.)
Mediante la expansión de $h(p) = p^a$$p_0 = 1$, Taylor teorema afirma que
$$
p^a = 1 - (1-p) - \frac{a(1-a)}{2!} (1-p)^2 - \frac{a(1-a)(2-a)}{3!} (1-p)^3 \cdots \>.
$$
Tenga en cuenta que debido a $0 < a < 1$, cada término después del primero es negativo, por lo que tenemos
$$
p^a = 1 - \sum_{n=1}^\infty b_n (1-p)^n \>,
$$
donde $0 \leq b_n \leq 1$ son conocidos a priori. Por lo tanto
$$
1 - p^a = \sum_{n=1}^{\infty} b_n (1-p)^n = \sum_{n=1}^\infty b_n \Pr(G \geq n) = \sum_{n=1}^\infty f_n \Pr(G = n) = \mathbb E f(G),
$$
donde $G \sim \mathrm{Geom}(p)$, $f_0 = 0$ y $f_n = \sum_{k=1}^n b_k$$n \geq 1$.
Y, ya sabemos cómo utilizar nuestra moneda para generar una variable aleatoria Geométrica con probabilidad de éxito $p$.
Pieza 5: simulación Monte Carlo para el truco.
Deje $X$ ser un discreto de la variable aleatoria toma valores en $[0,1]$$\Pr(X = x_n) = p_n$. Deje $U \mid X \sim \mathrm{Ber}(X)$. Entonces
$$
\Pr(U = 1) = \sum_n x_n p_n.
$$
Pero, teniendo en $p_n = p(1-p)^n$$x_n = f_n$, vemos ahora cómo generar un $\mathrm{Ber}(1-p^a)$ variable aleatoria y esto es equivalente a la generación de una $\mathrm{Ber}(p^a)$.