Parece que ya hay grandes respuestas a esta pregunta, pero quería intentarlo yo también.
Cuando vi el video sobre el juego de lanzamiento de monedas, lo primero que se me ocurrió fueron las siguientes ideas:
- Supongamos que en un juego, ¿qué pasa si todos los jugadores obtienen Cola en el primer lanzamiento (es decir, ronda=1)? ¿Significa esto que no hubo ganadores?
- Supongamos en algún otro juego, ¿qué pasa si en la ronda=5 quedan 41 jugadores y luego en la ronda=6, todos los jugadores obtienen Cola? ¿Significa también que no hay ganadores?
Para mí, parece que en este juego de lanzamiento de monedas, no siempre puede haber un ganador.
Estaba curioso y escribí una simulación en R yo mismo.
Primero, definí una función para ejecutar el juego de lanzamiento de monedas que se describió en el video:
simulate_game <- function(num_players, p_heads) {
results <- data.frame(player = paste0("player", 1:num_players))
status <- rep("playing", num_players)
seen_tails <- rep(FALSE, num_players)
round <- 1
# simulación
while (sum(status == "playing") > 1) {
coin_flips <- ifelse(runif(num_players) < p_heads, "heads", "tails")
seen_tails <- ifelse(coin_flips == "tails", TRUE, seen_tails)
current_round <- ifelse(status == "playing", coin_flips, "eliminated")
status <- ifelse(seen_tails == TRUE, "eliminated", status)
results <- cbind(results, current_round)
colnames(results)[ncol(results)] <- paste0("round_", round)
round <- round + 1
}
# si solo queda un jugador jugando, declararlo como ganador
if (sum(status == "playing") == 1) {
winner_index <- which(status == "playing")
results[winner_index, ncol(results) + 1] <- "winner"
results[-winner_index, ncol(results)] <- "eliminated"
colnames(results)[ncol(results)] <- paste0("round_", round)
}
num_winners_last_round <- sum(results[,ncol(results)] == "winner")
return(num_winners_last_round)
}
run_simulations <- function(num_players, num_simulations, p_values) {
avg_num_winners_list <- numeric(length(p_values))
Este código analiza el número promedio de ganadores en un conjunto de juegos. A mi parecer, un juego individual puede tener $1$ ganador o $0$ ganadores. En un conjunto de $n$ juegos, el número promedio de ganadores debe estar entre $(0,1)$.
Ahora, repetí esta simulación para 1000 jugadores y diferentes valores de probabilidad de éxito para la moneda:
num_players <- 100
num_simulations <- 100
p_values <- seq(0.01, 0.99, by = 0.01)
final_results <- run_simulations(num_players, num_simulations, p_values)
print(final_results)
Finalmente, grafiqué los resultados:
library(ggplot2)
ggplot(final_results, aes(x = p, y = avg_num_winners)) +
geom_line() +
labs(title = "Número Promedio de Ganadores vs Probabilidad de Caras",
x = "Probabilidad de Caras (p)",
y = "Número Promedio de Ganadores") +
theme_minimal()
También obtuve un gráfico con una forma similar en zig-zag:
Después de todo este trabajo, me di cuenta de que mi respuesta no aporta realmente nada de valor a esta pregunta ... no hay derivaciones matemáticas en mi respuesta, y usuarios anteriores han enviado simulaciones similares a la mía que parecen ser mucho más eficientes ... pero en el espíritu de las matemáticas y la curiosidad, ¡quería compartir mis ideas!
¡Excelente trabajo para el OP, todos los que publicaron una respuesta y todos los que leyeron y también pensaron en ideas!