Go Down

Topic: Il paradosso di Monty Hall (Read 400 times) previous topic - next topic

fabpolli


 ;D se sono terrapiattisti confuteranno comunque ;D

A maggior ragione buone prove e buona dimostrazione!
 

ORSO2001

Quote
terrapiattisti
perchè non lo è!?

 :D  :D  :D  :D

Stilita

#17
Feb 13, 2020, 05:37 pm Last Edit: Feb 13, 2020, 05:40 pm by Stilita
perchè non lo è!?

 :D  :D  :D  :D
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!
:D  :D  :D  :D :D  :D  :D  :D
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

fabpolli

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

Incredibile!!!

ORSO2001

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

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

Stilita

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

Incredibile!!!

Si, però la faccia nascosta, perchè sono anche un lunapiattista.
:D  :D  :D  :D
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

Stilita

#21
Feb 13, 2020, 05:50 pm Last Edit: Feb 13, 2020, 05:58 pm by Stilita
non mi riferivo a te...chiedevo solo conferma se la terra è piatta o no  ;)

comunque OT nell'OT ...date un occhio al sito "segni dal cielo"...IL TOP!
Tempo fa provai a vedere le argomentazioni dei TP, ma
non c'è la feci ad arrivare fino alla fine, troppo assurde.
Ho dato un occhiata al sito che hai indicato...incredibile e assurdo...
l'auto DR4 a 16900 euro....
:D  
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

paulus1969

La funzione random la userei solo per posizionare la macchina dietro una porta a caso
per poi dopo simulare tante volte il cambiamento
Se trovi lo scettico giusto, però, ti costringerà a fare tutto manualmente con tre carte da gioco.
Obiezione dello scettico rompipalle:
"non puoi dimostrare la validità delle teorie statistiche mediante algoritmi che usano generatori pseudocasuali, in quanto gli stessi generatori sono costruiti proprio basandosi sulle stesse teorie che vuoi andare a dimostrare".


Stilita

#23
Feb 14, 2020, 01:25 pm Last Edit: Feb 14, 2020, 01:28 pm by Stilita
Se trovi lo scettico giusto, però, ti costringerà a fare tutto manualmente con tre carte da gioco.
Obiezione dello scettico rompipalle:
"non puoi dimostrare la validità delle teorie statistiche mediante algoritmi che usano generatori pseudocasuali, in quanto gli stessi generatori sono costruiti proprio basandosi sulle stesse teorie che vuoi andare a dimostrare".


Allora, sono riuscito a convincerli simulando 100 porte, lui ne sceglie una e il presentatore
ne apre 98 perdenti.
Quindi hanno capito che la probabilità passa da 1/100 a 1/2.
In poche parole è il presentatore che fa "autogol" scoprendo le sue carte.
Per questa volta il buon Arduino si è riposato! :D  
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

docdoc

#24
Feb 16, 2020, 07:53 pm Last Edit: Feb 16, 2020, 08:01 pm by docdoc
Conosco bene il paradosso Mony Hall (anche perché gestisco un gruppo FB dedicato proprio a logica e matematica, dove ne abbiamo parlato, anche in alcune varianti...;)), se le persone alle quali spieghi il processo matematico/probabilistico non si convincono diciamo che sarà difficile che tu possa avere successo pure con Arduino. ;)

In ogni caso, tu devi avere un buon generatore di numeri casuali per avere dei risultati decenti, e questo non puoi farlo se usi sempre lo stesso seme ("seed"), devi usare quantomeno una lettura di un pin analogico non collegato a nulla (es. "analogRead(A0)").

Prova a vedere questa versione, basata sul tuo codice, come l'ho modificata, e confronta i risultati con il tuo, e soprattutto vedi come cambia in base al numero di round tra pochi e tanti:

Code: [Select]
unsigned long wins;
#define TOTROUNDS 4
int rounds[TOTROUNDS] = { 20, 100, 1000, 10000};

void setup ()
{
  Serial.begin (115200);

  unsigned long seed = analogRead(A0);
  randomSeed(seed); 
  delay(analogRead(A0)/5);
  seed *= analogRead(A0);
  randomSeed(seed); 
 
  Serial.print("seed=");
  Serial.println(seed);

  for (int i=0; i<TOTROUNDS; ++i)
  {
    Serial.print("Rounds=");
    Serial.println(rounds[i]);
    Serial.print(" Non cambio=");
    doRounds(rounds[i],false);
    Serial.print(" Cambio=");
    doRounds(rounds[i],true);
    Serial.println();
  }
}

void doRounds(int rounds, bool change)
{
  wins = 0;
  for (unsigned long round = 0; round < rounds; round++)
  {
    if ( doOneRound(change) )
      ++wins;
  }
  Serial.print(wins); 
  Serial.print("(");
  Serial.print(100.0 * wins / rounds);
  Serial.print("%)");
}

bool doOneRound(bool change)
{
  bool car[3];
  for (byte i = 0; i < 3; i++)
    car[i] = false;
 
  // choose which door has the car
  int c=random(0, 3);
  car[c] = true;
 
  // contestant makes a random choice
  byte choice = random(0, 3);
 
  // host chooses another door
  byte hosts_choice;
  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?
  return (car[choice] == true);
 
}  // end of doOneRound

void loop ()
{ }

otterrai un output di questo tipo:
Code: [Select]
seed=52540
Rounds=20
 Non cambio=5(25.00%) Cambio=15(75.00%)
Rounds=100
 Non cambio=34(34.00%) Cambio=65(65.00%)
Rounds=1000
 Non cambio=330(33.00%) Cambio=663(66.30%)
Rounds=10000
 Non cambio=3299(32.99%) Cambio=6720(67.20%)

Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

speedyant

Interessante discussione! Mi ricordo che avevamo trattato la generazione di numeri casuali anche per colpa mia, io ero alla ricerca di impulsi random per verificare le differenze tra oscilloscopi analogici e digitali.

Io seguo.

gpb01

#26
Feb 17, 2020, 12:04 pm Last Edit: Feb 17, 2020, 12:04 pm by gpb01
... REGOLAMENTO, punto 16.4 ... ho dato una ripulita di alcuni inutili post ... rimaniamo su questioni puramente tecniche riguardanti Arduino ed il progetto del OP. Grazie.

Guglielmo
Search is Your friend ... or I am Your enemy !

Stilita

#27
Feb 17, 2020, 08:44 pm Last Edit: Feb 17, 2020, 09:01 pm by Stilita
@docdoc, domani provo il tuo sketch e ti farò sapere.

@docdoc, e @speedyant, quanto riguarda la generazione random mi è  stato consigliato
di usare la libreria di Leo, che va meglio del leggere una porta analogica
unico inconveniente è  molto più lenta nello generare , ma molto più  "random".
Ciao
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

Stilita

#28
Feb 18, 2020, 12:04 pm Last Edit: Feb 18, 2020, 12:11 pm by Stilita
@docdoc, ho fatto girare il tuo lavoro, ma mi da numeri di iterazioni
non corrispondenti a quelle impostate, e quindi anche e percentuali sono
sballate, nel senso che la somma cambio non cambio non da 100% :smiley-confuse:

ciao

Code: [Select]
seed=169735
Rounds=20
 Non cambio=6(30.00%) Cambio=18(90.00%)
Rounds=100
 Non cambio=33(33.00%) Cambio=77(77.00%)
Rounds=1000
 Non cambio=340(34.00%) Cambio=669(66.90%)
Rounds=10000
 Non cambio=3279(32.79%) Cambio=6620(66.20%)
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

docdoc

quindi anche e percentuali sono sballate, nel senso che la somma cambio non cambio non da 100%
Certo, perché se vedi bene nel programma le opzioni cambio o non cambio non sono riferite alla stessa giocata ma due giocate separate, ognuna con lo stesso numero di round. Come fossero, diciamo, due concorrenti diversi in due manche diverse: uno che cambia ed uno che non cambia.
In entrambi i casi il valore della percentuale di vittorie con il cambio si avvicina al previsto 66% (e quindi al 33% il non cambio).

Ovviamente se vuoi avere entrambe le percentuali per la stessa estrazione, ti basta fare il reciproco a 100 del risultato. ;)
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Go Up