Marcos Matabuena
07/10/2015
En este concurso, el concursante escoge una puerta entre tres, y su premio consiste en lo que se encuentra detrás. Una de ellas oculta un coche, y tras las otras dos hay una cabra. Sin embargo, antes de abrirla, el presentador, que sabe dónde está el premio, abre una de la s otras dos puertas y muestra que detrás de ella hay una cabra. Ahora tiene el concursante una última oportunidad de cambiar la puerta escogida .
La pregunta que surge es: ¿Cúal sería la estrategia correcta?
# Sea X una variable aleatoria que toma el valor 0 si en la puerta hay un coche y 1 si es una cabra
# Utilizamos una función para el problema
res= function(n){
# Generamos n simulaciones de las posiciones de los objetos en cada puerta
puertas=replicate(n,sample(c(1,1,0),replace=F))
# Expresamos los resultados del experimento en una matrix nx3
experimento= t(puertas)
# generamos n eleciones aleatorias del juego del concursante
jugador= replicate(n,sample(c(1,2,3),size=1))
# variable auxiliar necesaria para devolver la posicion del coche dentro cada fila de la matriz
idpos= 3*(0:(n-1))
# Puerta donde esta el coche
poselm= which(t(experimento==0))-idpos
# Numero de veces donde acertamos donde esta el coche si no cambiamos la puerta
cuantos=sum(jugador==poselm)
## Número de veces donde acertamos donde esta el coche si cambiamos la puerta
cuantos2=sum(jugador!=poselm)
# Probabilidad de acertar en nuestra elección inicial
probnc= cuantos/n
# Probabilidad de acertar si cambiamos de puerta
probc= cuantos2/n
probnc
probc
resultados= c(probc)
}
Para conseguir una aproximación asintótica fiable debemos hacer que el número de simulaciones tienda a infinito, en este caso fijamos el número de simulaciones a n=1000000.
start <- Sys.time()
probc= res(1000000)
probnc= 1-probc
Si decidimos no cambiar la puerta , la probabilidad de éxito de acertar donde esta el coche es:
## [1] 0.333799
En caso contrario:
## [1] 0.666201
En definitiva, la mejor estrategia es cambiar de puerta, tenemos el doble de probabilidades
El tiempo de ejecución fue:
## Time difference of 42.49867 secs
Siendo los valores que obteniamos de manera aproximada con la simulación.
# Sea X una variable aleatoria que toma el valor 0 si en la puerta hay un coche y 1 si es una cabra
# Utilizamos una función para el problema
res= function(n){
# Generamos n simulaciones de las posiciones de los objetos en cada puerta
puertas=replicate(n,sample(c(1,1,1,0),replace=F))
# Expresamos los resultados del experimento en una matrix nx3
experimento= t(puertas)
# generamos n eleciones aleatorias del juego del concursante
jugador= replicate(n,sample(c(1,2,3,4),size=1))
# variable auxiliar necesaria para devolver la posicion del coche dentro cada fila de la matriz
idpos= 4*(0:(n-1))
# Puerta donde esta el coche
poselm= which(t(experimento==0))-idpos
suma=0
for(i in 1:n){
aux= rep(1:4,1)
aux2=aux-jugador[i]
# puertas que puede escoger
conj= aux[which(aux2!=0)]
## puertas en las que estan la cabra
conj2= conj[which((conj-poselm[i])!=0)]
## puerta que abre el presentador
p=sample(conj2,1)
## puertas que puede elegir el concursante
conj3= conj[which((conj-p)!=0)]
## puerta que elige el concursante
conj4= sample(conj3,1)
if(conj4==poselm[i]){
suma= suma +1
}
}
# Numero de veces donde acertamos donde esta el coche si no cambiamos la puerta
cuantos=sum(jugador==poselm)
# Probabilidad de acertar en nuestra elección inicial
probnc= cuantos/n
# Probabilidad de acertar si cambiamos de puerta
probc= suma/n
probnc
probc
resultados= c(probc,probnc)
}
Para conseguir una aproximación asintótica fiable debemos hacer que el número de simulaciones tienda a infinito, en este caso fijamos el número de simulaciones a n=1000000.
start <- Sys.time()
res= res(1000000)
Si decidimos no cambiar la puerta , la probabilidad de éxito de acertar donde esta el coche es:
## [1] 0.250375
En caso contrario:
## [1] 0.374764
En definita, es mejor tambien en esta opción cambiar de puerta.
El tiempo de ejecución fue:
## Time difference of 1.544953 mins
Es claro \(P(B|\overline{A}))=1/2\) y \(P[B|A]=0\) .
En definitiva,\(P(B)=3/8\)