Su sugerencia de resolver una versión general del problema es acertada. Vamos a preparar esto.
El dado tiene dos resultados especiales: "muerte", que termina el proceso, y 0, que no tiene efecto. También podríamos eliminar el 0, creando un "dado truncado" de 19 caras. Sea la probabilidad de que el dado muestre un valor numérico $\omega$ sea $p(\omega)$ y que $p_{*}$ sea la probabilidad de muerte. $\Omega$ es el conjunto de todos estos posibles valores numéricos (sin incluir "muerte", que no es numérico).
Tu objetivo es alcanzar un total de $T$ antes de observar la "muerte". Cuando $T\le 0,$ ha alcanzado este umbral, por lo que la posibilidad de ganar es $1.$ De lo contrario, cuando $T \gt 0,$ dividir el evento "eventualmente gano" en los resultados numerados separados que ocurren dentro de $\Omega.$ Es un axioma de la probabilidad que la probabilidad de este suceso sea la suma de las probabilidades de sus componentes (no superpuestos).
$$\Pr(\text{Reach } T) = \sum_{\omega\in\Omega}p(\omega) \Pr(\text{Reach } T-\omega).$$
Este recursión puede llevarse a cabo con una sencilla forma de programa dinámico. A menos que los valores y las probabilidades sean muy especiales, no se puede esperar escribir una bonita fórmula cerrada para la solución. Basta con realizar el cálculo computando los valores de $T=1,$ $T=2,$ etc, en orden. (Esto se denomina "eliminando la recursividad de cola" en informática).
El número de cálculos realizados por este algoritmo es proporcional a $T$ veces el número de valores únicos en el dado truncado. Esto lo hace eficaz para $T$ y dados realistas.
Mediante un programa de este tipo (utilizando coma flotante de doble precisión) encuentro la posibilidad de alcanzar $T=250$ es $0.269880432506\ldots.$
Como dato realista, esperas infligir unos 9,5 puntos de daño por tirada, lo que sugiere que tardarás aproximadamente $250/9.5 \approx 27$ rueda para ganar. Pero en cada tirada hay un $1-1/20$ probabilidad de sobrevivir, por lo que su probabilidad de sobrevivir para entonces es $$(1-1/20)^{27} = \left[(1-1/20)^{20}\right]^{27/20} \approx \exp(-27/20) = 0.25924\ldots.$$
Es una respuesta bastante parecida a la que obtuve yo.
Como otra comprobación de la realidad, eso también se acerca a los resultados de tu simulación. De hecho, obtengo resultados de simulación comparables: no difieren significativamente de la respuesta exacta.
Te dejo que escribas el programa. Se necesitará una estructura de datos que pueda almacenar todos los valores de $\Pr(\text{Reach } T-\omega)$ que figura en la parte derecha de la fórmula. Considere la posibilidad de utilizar una matriz para ello, indexada por los valores $0,1,2,\ldots, T.$
BTW, hay otros métodos de solución. Este problema describe un Cadena de Markov cuyos estados son los valores totales que se han alcanzado (de $0$ a través de $T,$ ya que cualquier cosa mayor que $T$ bien podría combinarse con $T$ ), junto con un estado especial (absorbente) de "muerte". Esta cadena puede analizarse en términos de una gran matriz (que tiene $250+2$ dimensiones). En la práctica, esta formulación no tiene mucho valor, pero la teoría de las cadenas de Markov permite comprender el proceso. Puedes extraer de esa teoría información sobre tus posibilidades de ganar y sobre cuántas tiradas es probable que tardes en ganar si lo consigues.
Otro enfoque más se sugirió en un comentario a la pregunta: explotan una distribución geométrica. Se refiere a analizar el proceso en función de cuántas tiradas tendrá antes de morir. Para repartir puntos de golpe, imagina tirar el dado, con su cara de "muerte" quitada paralela a lanzar una moneda (sesgada), cuya función es determinar si mueres. (Así, en la situación de la pregunta, cada una de las 19 caras restantes del dado -incluida la $0,$ que debe dejarse dentro tiene un $1/19$ azar; más generalmente, el lado con valor $\omega$ tiene una oportunidad $p(\omega)/(1-p_{*}).$ ) Las dos caras de la moneda son "muerte" (con probabilidad $p_{*}$ ) y "continuar" (con probabilidad $1-p_{*}$ ). En cada turno tiras por separado el dado truncado y lanzas la moneda, acumulando puntos de golpe hasta alcanzar el umbral $T$ o la moneda sale "muerte".
Existe una simplificación, porque es fácil calcular la probabilidad de que nunca se produzca la "muerte" en el primer caso. $n=0,1,2,\ldots$ vueltas: es igual a $(1-p_{*})^n$ porque todas las vueltas son independientes. Formalmente, esto describe una variable aleatoria $N$ cuyo valor es igual a $n$ con probabilidad $p_{*}(1-p_{*})^{n}.$ (Esta es una distribución geométrica ).
Para modelar las tiradas del dado truncado, dejemos que $X_1$ sea su valor en la primera tirada, $X_2$ su valor en la segunda tirada, y así sucesivamente. La suma después de $n$ rollos por lo tanto es $S_n = X_1 + X_2 + \cdots + X_n.$ (Esta es una paseo aleatorio .) La probabilidad de alcanzar el umbral puede calcularse descomponiendo este suceso en la infinidad contable de posibilidades correspondientes al número de tiradas necesarias. Las reglas básicas de la probabilidad condicional nos dicen
$$\Pr(\text{Reach }T) = \sum_{n=0}^\infty \Pr(S_N\ge T\mid N=n)\Pr(N=n).\tag{*}$$
El lado derecho requiere que encontremos estas probabilidades de cada $S_n$ alcanzar el umbral. Aunque esto no es una gran simplificación para un dado general ( $S_n$ puede tener una distribución muy complicada) , conduce a una buena aproximación cuando es probable que el proceso realice muchas tiradas antes de morir o alcanzar el umbral. Esto se debe a que la suma de un gran número de las $X_i$ tiene aproximadamente una distribución Normal (según la Teorema central del límite ). Cuando la expectativa del dado truncado es $\mu$ (igual a $9.45/(1-0.05)$ en la pregunta) y su varianza es $\sigma^2,$ la distribución de $S_n$ tiene una expectativa de $n\mu$ y la varianza de $n\sigma^2$ (según las leyes básicas de la expectativa y la varianza aplicadas a las variables independientes $X_1,X_2,\ldots, X_n$ ). Escribir $\Phi(x;n\mu,n\sigma^2$ para la función de distribución Normal con expectativa $n\mu$ y varianza $n\sigma^2,$ obtenemos
$$\Pr(S_N\ge T\mid N=n) \approx 1 - \Phi\left(T-\frac{1}{2}; n\mu, n\sigma^2\right).$$
Introduciendo esto en $(*)$ junto con la ley de distribución geométrica da como resultado
$$\Pr(\text{Reach }T) \approx \sum_{n=1}^\infty \left(1 - \Phi\left(T-\frac{1}{2}; n\mu, n\sigma^2\right)\right)p_{*}(1-p_{*})^n.$$
En la práctica, podemos dar por terminada la suma en el momento en que $\sum_{i=n}^\infty p_{*}(1-p_{*})^i$ es inferior a un error tolerable $\epsilon\gt 0,$ porque el $\Phi$ nunca supera $1.$ Este límite superior es igual a $\log(p_{*}\epsilon)/\log(1-p_{*}).$ (Para la situación de la pregunta, ese límite superior está en torno a 418.) También podemos calcular un valor razonable para comenzar la suma (saltándonos los valores iniciales realmente pequeños). Eso nos lleva al código relativamente corto y sencillo que se muestra a continuación (escrito en R
). Su salida, obtenida mediante el comando dragon.Normal()
es $0.269879\ldots,$ coincidiendo con la respuesta exacta con cinco cifras significativas.
# Use `NA` to specify the "death" sides of the die; otherwise, specify the
# values on its faces. `p` gives the associated probabilities.
dragon.Normal <- function(threshold=250, die=c(NA, 2:19, 0), p=rep(1/20,20), eps=1e-6) {
#
# Find and remove the "death" face(s) to create the truncated die.
#
i.death <- which(is.na(die))
p.death <- sum(p[i.death])
if (p.death <= 0) return(1)
die <- die[-i.death]
p <- p[-i.death]
p <- p / sum(p)
#
# Compute the expectation and variance of the truncated die.
#
mu <- sum(die * p)
sigma2 <- sum((die-mu)^2 * p)
#
# Establish limits for the sum.
#
N <- ceiling(log(eps * p.death) / log(1 - p.death))
if (N > 1e8) stop("Problem is too large.")
Z <- qnorm(eps)
n <- min(N, max(1,
floor((Z * (1 - sqrt(1 + 4*threshold*mu/(Z^2*sigma2)))/(2*mu))^2 * sigma2)))
#
# Compute the sum.
#
n <- n:N
sum(p.death * (1-p.death)^n *
pnorm(threshold - 1/2, mu*n, sqrt(sigma2*n), lower.tail=FALSE))
}