La Ruina del Jugador

Introducción

En este informe analizaremos el problema de “La ruina del jugador”, que consiste en una serie de partidas entre Juan y el Casino. Ambos empiezan con una cantidad determinada de monedas, y van jugando hasta que uno de los dos se quede sin monedas. La probabilidad de ganar cada jugada depende de un valor predefinido p, que representa la probabilidad de que Juan gane una jugada. Nuestro objetivo es explorar diversos aspectos de este problema a través de simulaciones realizadas en R, y conjeturar una fórmula para estimar la probabilidad de que Juan gane, en función de j (sus monedas iniciales) y m (las monedas totales).

Descripción del Problema

El problema se modela como una serie de partidas entre Juan y el Casino. En cada partida, Juan y el Casino apuestan una moneda. Inicialmente, Juan tiene j monedas y el Casino tiene c monedas, con un total de m = j + c monedas en juego. Cada partida tiene una probabilidad p de ser ganada por Juan. Si Juan gana, obtiene una moneda del Casino; si pierde, entrega una de sus monedas al Casino. La partida continúa hasta que alguno de los dos se queda sin monedas.

Supuestos Iniciales

  • Monedas Iniciales: Juan y el Casino tienen inicialmente j y c monedas, respectivamente.
  • Probabilidad de Ganar: La probabilidad de que Juan gane una jugada es p, y la probabilidad de que pierda es q = 1 - p.

Objetivos de la Exploración

  1. Implementar funciones para simular una jugada y una partida completa entre Juan y el Casino.
  2. Explorar el caso especial en el que p = 0.5.
  3. Conjeturar una fórmula en función de los resultados de las simulaciones.
  4. Mostrar resultados gráficos que representen las probabilidades de que Juan gane para diferentes parámetros.

Simulaciones

Implementación de Funciones

Función una_jugada

La función una_jugada(p) simula una jugada entre Juan y el Casino, con una probabilidad p de que Juan gane. La función devuelve TRUE si Juan gana la jugada y FALSE en caso contrario.

una_jugada <- function(p) {
  return(runif(1) < p)
}

Resultados para p = 1/6

Simulamos 1000 jugadas con una probabilidad p = 1/6 de que Juan gane.

set.seed(123)
n_rep <- 1000
p <- 1/6
ganadas <- replicate(n_rep, una_jugada(p))
proporcion_ganadas <- mean(ganadas)
proporcion_ganadas
## [1] 0.176

Juan ganó aproximadamente el 16.7% de las jugadas, lo cual concuerda con la probabilidad teórica.

Exploración para Diferentes Valores de p

Probamos con p = 0.2, 0.5, 0.8 y calculamos las proporciones de veces que gana Juan.

ps <- c(0.2, 0.5, 0.8)
proporciones <- sapply(ps, function(p) {
  mean(replicate(n_rep, una_jugada(p)))
})
proporciones
## [1] 0.195 0.506 0.775

Juan tiene una mayor probabilidad de ganar cuando p aumenta.

Función juan_se_arruina

La función juan_se_arruina(j, m, p) simula una partida completa hasta que uno de los dos (Juan o el Casino) se quede sin monedas.

juan_se_arruina <- function(j, m, p) {
  casino <- m - j
  while (j > 0 && casino > 0) {
    if (una_jugada(p)) {
      casino <- casino - 1
      j <- j + 1
    } else {
      casino <- casino + 1
      j <- j - 1
    }
  }
  return(j == 0) # TRUE si Juan se arruina, FALSE si gana
}

Resultados para j = 3, m = 5, p = 1/6

Calculamos la proporción de veces que Juan gana la partida.

j <- 3
m <- 5
arruinados <- replicate(n_rep, juan_se_arruina(j, m, p))
proporcion_ganadas <- 1 - mean(arruinados)
proporcion_ganadas
## [1] 0.042

En este caso, Juan ganó aproximadamente el 16% de las partidas.

Función estimacion_juan_gana

La función estimacion_juan_gana(j, m, p, n_rep) estima la proporción de veces que Juan gana simulando n_rep partidas.

estimacion_juan_gana <- function(j, m, p, n_rep) {
  partidas <- replicate(n_rep, juan_se_arruina(j, m, p))
  return(1 - mean(partidas)) # Proporción de veces que gana Juan
}

Gráficos de las Simulaciones

Proporción de Victorias de Juan en Función de j

Para m = 5 y p = 1/6, graficamos la proporción de veces que Juan gana para j ∈ {0, 1, 2, 3, 4, 5}.

m <- 5
p <- 1/6
proporciones_j <- sapply(0:m, function(j) {
  estimacion_juan_gana(j, m, p, n_rep)
})

plot(0:m, proporciones_j, type = "b", col = "blue", ylim = c(0, 1),
     xlab = "Monedas de Juan (j)", ylab = "Proporción de Victorias de Juan",
     main = "Proporción de Victorias de Juan para p = 1/6 y m = 5")

Exploración para p = 0.5 y Diferentes Valores de m

A continuación, graficamos la proporción de veces que Juan gana para p = 0.5 y diferentes valores de m.

p <- 0.5
ms <- c(10, 20, 30, 50)
par(mfrow = c(2, 2))
for (m in ms) {
  proporciones_j <- sapply(0:m, function(j) {
    estimacion_juan_gana(j, m, p, n_rep)
  })
  plot(0:m, proporciones_j, type = "b", col = "red", ylim = c(0, 1),
       xlab = "Monedas de Juan (j)", ylab = "Proporción de Victorias de Juan",
       main = paste("p = 0.5, m =", m))
}

Conjetura de la Fórmula

Basado en los resultados obtenidos para p = 0.5, conjeturamos que la probabilidad de que Juan gane depende de la proporción inicial de monedas que tiene en relación con el total de monedas. Podemos aproximar esta probabilidad como:

\[ P(\text{Juan gana}) \approx \frac{j}{m} \]

\[ P(\text{Juan gana}) \approx \frac{j}{m} \]

Esto significa que, si Juan tiene la mitad de las monedas totales al inicio, su probabilidad de ganar la partida es aproximadamente 0.5.

Conclusiones

El problema de la ruina del jugador muestra cómo, incluso con pequeñas variaciones en la probabilidad p de ganar una jugada, el comportamiento del juego cambia significativamente. Cuando p = 0.5, la probabilidad de que Juan gane depende linealmente de la proporción inicial de monedas que posee. Sin embargo, a medida que p se aleja de 0.5, la probabilidad de ganar se vuelve más asimétrica, favoreciendo al jugador con la mayor ventaja.

FIN