Declaración:
Suponga que está en un programa de juegos y le dan la opción de tres puertas: detrás de una puerta hay un automóvil; detrás de los demás, cabras. Usted elige una puerta, dice No. 1, y el anfitrión, que sabe lo que hay detrás de las puertas, abre otra puerta, dice No. 3, que tiene una cabra. Luego te dice: “¿Quieres elegir la puerta número 2?” ¿Le conviene cambiar su elección?
Después de cambiar tengo posibilidades de ganar de [math] \ frac {2} {3} [/ math] en comparación con nada de probabilidad de cambio [math] \ frac {1} {3}. [/ Math]
Hay muchas maneras de resolver el problema, puedes ver las respuestas aquí Problema de Monty Hall
Pero, si no eres fácil de digerir lo que está escrito allí, puedes jugar este juego varias veces y ver si tu estrategia funciona o no. Eso es básicamente por la simulación de Monte Carlo.
Tengo un código escrito para ti en Matlb. ¡Juega y mira lo que pasa!
%% Escrito por Aniket Marne %%
%% [correo electrónico protegido] %%
clc;
limpiar todo;
permanecer = 0;
swich = 0;
k = 1000;
para i = 1: k
d = randi ([1,3]); % puerta detrás de la cual hay un automóvil
c = randi ([1,3]); % puerta que eliges
si (d == c)
quedarse = quedarse + 1; % Si cambia, perderá un automóvil
más
swich = swich + 1; % si cambia, entonces puede obtener el automóvil como lo conoce otra persona.
final
final
a = sprintf (‘Las posibilidades de ganar si permanece en su selección son% f por ciento’, permanezca / k * 100);
disp (a)
b = sprintf (‘Las posibilidades de ganar si cambia son% f por ciento’, swich / k * 100);
disp (b)
% El juego %
disp (‘Ingresa cuántas veces quieres jugar’)
n = entrada (”);
puerta = [1,2,3];
win = 0;
gana = 0;
winns = 0;
disp (‘¿Quieres jugar en modo automático o manual? 1 = automático más manual’)
auto = input (”);
si auto == 1
para i = 1: n
porche = randi ([1,3]);
cabra = setdiff (puerta, porche);
c = puerta (randi ([1, numel (puerta)]));
a = sprintf (‘Usted elige la puerta% d’, c);
disp (a)
host = setdiff (cabra, c);
hostopens = host (randi ([1, numel (host)]));
notseen = setdiff (puerta, hostopens);
toswitch = setdiff (no visto, c);
si porche == c
winns = winns + 1;
disp (“¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!”)
final
c = toswitch (randi ([1, numel (toswitch)]));
si porche == c
gana = gana + 1;
disp (‘¡Ganaste al cambiar la puerta, felicidades, chico inteligente!’)
final
final
e = sprintf (‘Las posibilidades de ganar al no cambiar son% f por ciento’, gana / n * 100);
disp (e)
f = sprintf (‘Las posibilidades de ganar al cambiar son% f por ciento’, gana / n * 100);
disp (f)
más para i = 1: n
porche = randi ([1,3]);
cabra = setdiff (puerta, porche);
disp (‘elija la puerta 1,2 o 3’)
mientras que (1)
c = entrada (”);
si c ~ = 1 && c ~ = 2 && c ~ = 3
disp (‘Ingrese enteros 1,2 o 3’)
más descanso
final
final
host = setdiff (cabra, c);
hostopens = host (randi ([1, numel (host)]));
notseen = setdiff (puerta, hostopens);
toswitch = setdiff (no visto, c);
disp (‘¿Desea cambiar 1 = sí, de lo contrario = no’)
swich = input (”);
si swich == 1
c = toswitch (randi ([1, numel (toswitch)]));
final
si porche == c
disp (“¡Tú ganas! Felicitaciones por Porche”)
ganar = ganar + 1;
else disp (‘Hurrey! Lo siento amigo, tienes una cabra’)
final
final
d = sprintf (‘Las posibilidades de ganar según su estrategia son% f por ciento’, win / n * 100);
disp (d)
final
Salida de muestra:
Las posibilidades de ganar si permanece en su selección son 33.200000 por ciento
Las posibilidades de ganar si cambia son 66.800000 por ciento
Ingresa cuántas veces quieres jugar
20
¿Quieres jugar en modo automático o manual? 1 = automático más manual
1
Tu eliges la puerta 2
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tu eliges la puerta 1
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tú eliges la puerta 3
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tú eliges la puerta 3
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tú eliges la puerta 3
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tu eliges la puerta 1
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tu eliges la puerta 2
Ganaste al cambiar la puerta, ¡Felicidades, chico inteligente!
Tú eliges la puerta 3
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tú eliges la puerta 3
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Tú eliges la puerta 3
¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!
Las posibilidades de ganar al no cambiar son 35.000000 por ciento
Las posibilidades de ganar al cambiar son 65.000000 por ciento
>>
Editar: código más generalizado
clc;
limpiar todo;
disp (‘Ingresa cuántas veces quieres jugar’)
n = entrada (”);
disp (‘Ingrese cuántas puertas hay’)
nd = input (”);
puerta = 1: nd;
win = 0;
gana = 0;
winns = 0;
disp (‘Ingrese cuántas puertas abre el host’)
ho = input (”);
mientras que (nd-ho) <2
disp (‘Esto no puede suceder. Deberías tener al menos 2 puertas cerradas’)
disp (‘Ingrese cuántas puertas abre el host’)
ho = input (”);
final
disp (‘¿Quieres jugar en modo automático o manual? 1 = automático más manual’)
auto = input (”);
si auto == 1
para i = 1: n
porche = randi ([1, numel (puerta)]);
cabra = setdiff (puerta, porche);
c = puerta (randi ([1, numel (puerta)]));
a = sprintf (‘Usted elige la puerta% d’, c);
disp (a)
host = setdiff (cabra, c);
no visto = puerta;
para k = 1: ho
hostopens = host (randi ([1, numel (host)]));
host = setdiff (host, hostopens);
notseen = setdiff (notseen, hostopens);
final
toswitch = setdiff (no visto, c);
si porche == c
winns = winns + 1;
disp (“¡Ganaste al no cambiar la puerta! ¡La lealtad te da sus beneficios!”)
final
c = toswitch (randi ([1, numel (toswitch)]));
si porche == c
gana = gana + 1;
disp (‘¡Ganaste al cambiar la puerta, felicidades, chico inteligente!’)
final
final
e = sprintf (‘Las posibilidades de ganar al no cambiar son% f por ciento’, gana / n * 100);
disp (e)
f = sprintf (‘Las posibilidades de ganar al cambiar son% f por ciento’, gana / n * 100);
disp (f)
más para i = 1: n
porche = randi ([1, numel (puerta)]);
cabra = setdiff (puerta, porche);
disp (‘elija la puerta 1,2 o 3’)
mientras que (1)
c = entrada (”);
if numel (setdiff (puerta, c) == numel (puerta))
fprintf (‘Ingrese enteros entre 1 y% d’, numel (puerta));
más descanso
final
final
host = setdiff (cabra, c);
no visto = puerta;
para k = 1: ho
hostopens = host (randi ([1, numel (host)]));
host = setdiff (host, hostopens);
notseen = setdiff (notseen, hostopens);
final
toswitch = setdiff (no visto, c);
disp (‘¿Desea cambiar 1 = sí, de lo contrario = no’)
swich = input (”);
si swich == 1
c = toswitch (randi ([1, numel (toswitch)]));
final
si porche == c
disp (“¡Tú ganas! Felicitaciones por Porche”)
ganar = ganar + 1;
else disp (‘Hurrey! Lo siento amigo, tienes una cabra’)
final
final
d = sprintf (‘Las posibilidades de ganar según su estrategia son% f por ciento’, win / n * 100);
disp (d)
final