To są zupełnie inne sytuacje, bo na początku zawodnik nie miał żadnej podpowiedzi.
Po odłonięciu pustej pramki, zawodnik dostał podpowiedź a wiec jest to inna sytuacja.
Prawdopodobieństwo, że zawodnik wybrał bramkę pustą jest większe (2/3), niż że wybrał bramkę z nagrodą(1/3).
Więc skoro Monty odsłoni bramkę pustą (
z większym prawdopodobieństwem jest to druga pusta), tak więc bardziej prawdopodobne jest to, że bramka z wygraną to ta trzecia a więc opłaca się zmienić.
Ale jeśli potrzebny program na udowodnienie, to ja dla odmiany w C:
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIMULATIONS 1000000
int main()
{
int stayWins = 0;
int switchWins = 0;
// Inicjalizacja generatora losowego
srand(time(0));
for (int i = 0; i < SIMULATIONS; i++)
{
// Losowy wybór drzwi z nagrodą (0, 1, 2)
int prizeDoor = rand() % 3;
// Losowy wybór drzwi przez gracza
int playerChoice = rand() % 3;
// Monty wybiera drzwi do odsłonięcia (nie mogą to być drzwi z nagrodą ani wybór gracza)
int montyChoice;
do
{
montyChoice = rand() % 3;
} while (montyChoice == prizeDoor || montyChoice == playerChoice);
// Strategia 1: Gracz pozostaje przy swoim wyborze
if (playerChoice == prizeDoor)
{
stayWins++;
}
// Strategia 2: Gracz zmienia wybór
int switchChoice;
do
{
switchChoice = rand() % 3;
} while (switchChoice == playerChoice || switchChoice == montyChoice);
if (switchChoice == prizeDoor)
{
switchWins++;
}
}
printf("Po %d symulacjach:\n", SIMULATIONS);
printf("Wygrane przy pozostaniu przy pierwszym wyborze: %d (%.2f%%)\n", stayWins, (stayWins * 100.0 / SIMULATIONS));
printf("Wygrane przy zmianie wyboru: %d (%.2f%%)\n", switchWins, (switchWins * 100.0 / SIMULATIONS));
return 0;
}
Można wrzucić w kompilator online:
https://www.onlinegdb.com/online_c_compiler
i sprawdzić.