Il paradosso di Monty Hall

Ciao, ho trovato uno sketch riguardo il paradosso di MH.
Non sembra funzionare, mi da sempre 33%.
Sembra che cambiare scelta sia più conveniente, e che
porta le probabilità di vincere al 66%.

Grazie

*/

const bool change = false;  // whether or not to switch doors
const int seed = 1234;
const unsigned long rounds = 2000;

unsigned long wins;

void  doOneRound ()
  {
  bool car [3];
  for (byte i = 0; i < 3; i++)
    car [i] = false; 
 
  // choose which door has the car
  car [random (0, 3)] = true;
 
  // contestant makes a random choice
  byte choice = random (0, 3);
 
  // host chooses another door
  byte hosts_choice;

  // don't choose contestant's door
  // also don't reveal the car
  do
    {
    hosts_choice = random (0, 3);
    } while (hosts_choice == choice || car [hosts_choice]);

  // change choice if desired
 
  if (change)
    {
    if (choice != 0 && hosts_choice != 0)
      choice = 0;
    else if (choice != 1 && hosts_choice != 1)
      choice = 1;
    else
      choice = 2;
    }  // end if

  // did we win the car?
  if (car [choice])
    wins++;
 
  }  // end of doOneRound
 
void setup ()
  {
  Serial.begin (115200);
  Serial.println ();   
  randomSeed (seed);
 
  // do as many rounds as desired
  for (unsigned long round = 0; round < rounds; round++)
    doOneRound ();
   
  Serial.print ("You won ");
  Serial.print (100UL * wins / rounds);
  Serial.println ("% of the time");   
   
  }  // end of setup

void loop () { }

mi sbaglio o change è sempre false?

Stilita:
Non sembra funzionare, mi da sempre 33%.
Sembra che cambiare scelta sia più conveniente, e che
porta le probabilità di vincere al 66%.

In realtà, se non ricordo male, è proprio così, se cambi porta (change=true) la probabilità di vincere passa da 1/3 a 2/3, quindi conviene cambiare :slight_smile:

Federico

infatti...secondo me si dovrebbe fare una valutazione doppia...cioè data scelta iniziale comune dare risultato su vittoria sia che si cambi sia no...dando i relativi risultati.

È un periodo che non riesco a concentrarmi, altrimenti avrei provato a farlo io di sana pianta.
Magari usando la funzione random con libreria di Leo, e iterando almeno un migliaio di volte.
Ero curioso di sperimentare la veridicità del fatto che cambiando aumentano le probabilità.
Quindi ho trovato lo sketch che ho postato, ma vedo che ha dei problemi.
Ciao.

Non ha problemi, devi solo variare il valore di

const bool change = false;

proprio per verificare il paradosso, a false ci si aspetta un risultato del 33%, a true dovresti verificare il paradosso ottenendo un 66%

Stilita:
Quindi ho trovato lo sketch che ho postato, ma vedo che ha dei problemi.

Onestamente non capisco, il programma serve solo a"dimostrare" che cambiando la porta (change=true) le probabilità passano al 66% e non al 50%, come ci si aspetterebbe.

Federico

fabpolli:
proprio per verificare il paradosso, a false ci si aspetta un risultato del 33%, a true dovresti verificare il paradosso ottenendo un 66%

Va bene, cambio quello che dici è quindi mi verrà sempre 66%.
Ma nella realtà se si simulano un numero alto di scelte mica verrà sempre 66%?
Verrà un numero che si avvicina al 66 , ma a volte più alto a volte più basso
Lo scostamento dipenderà dal numero delle "estrazioni".
Ed era questo che volevo vedere.

Ciao

tutta la discussione/logica del 33%, 66% o del 50% gira attorno al fatto di considerare o meno una scelta iniziale...allego schema copiato da Wikipedia...da qui si crea il relativo programma per verificare.

Paradosso_di_Monty_Hall.gif

Va bene, cambio quello che dici è quindi mi verrà sempre 66%.
Ma nella realtà se si simulano un numero alto di scelte mica verrà sempre 66%?
Verrà un numero che si avvicina al 66 , ma a volte più alto a volte più basso
Lo scostamento dipende dal numero delle "estrazioni".
Ed era questo che volevo vedere.

dovrebbe essere appunto il numero elevato di "test" che dovrebbe farti avvicinare al 33% ed al 66%...se valuti un numero ristretto od addirittura il test singolo i risultati potrebbero (sicuramente) essere molto diversi.

ORSO2001:
dovrebbe essere appunto il numero elevato di "test" che dovrebbe farti avvicinare al 33% ed al 66%...se valuti un numero ristretto od addirittura il test singolo i risultati potrebbero (sicuramente) essere molto diversi.

Probabilmente lo sketch esegue asetticamente una funzione matematica e quindi da sempre
lo stesso risultato.
Non fa una serie di scelte, alte, come vorrei fare io.
Appena riesco provo a farlo di sana pianta .
Ciao

Ma assolutamente no, ci sono dei random (per quello che può voler dire matematicamente un generatore di pseudocasuali su Arduino) pertanto le scelte di porta, se cambiare o meno possono essere frutto di casualità. Nel programma che hai tu sotto mano la scelta di cambiare o meno è fissa ma nessuno ti vieta di cambiare da costante a variabile e calcolare anche quella con un random zero o uno e ottenere anche la scelta casuale di cambiare porta oppure no.
Ciò non toglie che con tutte le dovute limitazioni derivanti dal generatore di numeri pseudocasuali scomodando la legge dei grandi numeri quanto più elevato è il numero di giocate tanto più ci si avvicinerà alla media ideale attesa.
Anche un semplice lancio di moneta se fatto dieci volte si discosterà molto dal 50% (o forse no :slight_smile: ), fatto un numero spropositato di volte la percentuale testa/croce sarà del 50%

fabpolli:
Ma assolutamente no...

La funzione random la userei solo per posizionare la macchina dietro una porta a caso
per poi dopo simulare tante volte il cambiamento di scelta o il non cambiamento
e rendermi conto che il paradosso è vero.

Ciao

Che è quello che suggeriva @ORSO2001 nel post #3.
Detto ciò che sia random, fisso, con entrambe i valori (cambio e non cambio) o cambiato secondo logiche varie iterando molto molte volte si arriva a verificare il paradosso.
Buone prove e modifiche al programma per renderlo adatto all'obiettivo che ti sei posto!
P.S. = Rileggendo potrei sembrare sarcastico, non è quello il tono sia chiaro!

fabpolli:
P.S. = Rileggendo potrei sembrare sarcastico, non è quello il tono sia chiaro!

Non lo avevo pensato.

La dimostrazione matematica che si trova in rete l'ho capita
ma nessuna persona che frequento ci crede, credono che le probabilità siano
del 50% una volta aperta una porta perdente
e quindi faccio 100/200 tentativi manuali per dimostrarlo? NO! Troppo tempo.
Quindi delegherei la dimostrazione al buon Arduino
Ciao

;D se sono terrapiattisti confuteranno comunque ;D

A maggior ragione buone prove e buona dimostrazione!

terrapiattisti

perchè non lo è!?

:smiley: :smiley: :smiley: :smiley:

ORSO2001:
perchè non lo è!?

:smiley: :smiley: :smiley: :smiley:

Si si, lo sono, come credo al finto sbarco sulla luna
sono anche TdG, e Juventino...e napoletano...e di colore...e solo una di queste è vera!
:smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

:o Quiandi fammi capire tu sei la luna???? :o

Incredibile!!!

non mi riferivo a te...chiedevo solo conferma se la terra è piatta o no :wink:

comunque OT nell'OT ...date un occhio al sito "segni dal cielo"...IL TOP!