Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Problema di Mèrè e simulazione di Monte Carlo
Forum - Algoritmi - Problema di Mèrè e simulazione di Monte Carlo

Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 1:45
Mercoledì, 30/05/2012
Volevo provare a simulare il problema di Mèrè http://x86.altervista.org/pascal-de-mere-e-i-dadi/
Volevo calcolare le probabilità di 2 eventi:
- lanciando 4 volte un dado esce 6 almeno una volta
- lanciando 24 volte una coppia di dadi esce almeno una coppia di 6
Nel primo caso la probabilità è di circa il 51%, nel secondo del 49%.

In pratica l'algoritmo per il caso 1 è questo:

Codice sorgente - presumibilmente Algoritmi

  1. p1 <-0
  2. per i<-1 to numero_di_lanci
  3.     A = array di 4 numeri interi casuali compresi tra 1 e 6
  4.     se 6 in A allora  p1 <- p1+1
  5. risultato = pi/numero_di_lanci



Il risultato combacia con la prob teorica
Per il secondo caso invece

Codice sorgente - presumibilmente Algoritmi

  1. p2 <- 0
  2. per i<-1 to numero_di_lanci
  3.     A = array di 24 coppie di int casuali compresi tra 1 6
  4.     // Cioè una cosa del tipo [[1,1],[2,4],[1,9]...]
  5.     per ogni coppia in A
  6.         se coppia[1]=6 e coppia[2]=6 allora p2 <- p2+1
  7. risultato = p2/numero_di_lanci



In questo caso però ottengo una prob di circa il 66%. Dov'è l'errore?
ringrazio anticipatamente


PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 9:33
Venerdì, 01/06/2012
secondo me sarebbe così
Codice sorgente - presumibilmente Algoritmi

  1. p2 <- 0
  2. per i<-1 to numero_di_lanci
  3.     A = array di 24 coppie di int casuali compresi tra 1 6
  4.     // Cioè una cosa del tipo [[1,1],[2,4],[1,9]...]
  5. per ogni coppia in A
  6.     se (coppia[0] + coppia[1]) = 6 allora p2 <- p2+1
  7. risultato = p2/numero_di_lanci


PM Quote
Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 23:10
Domenica, 17/06/2012
Ho risolto. Il fatto è che il programma "contava" le coppie di 6, mentre in teoria avrebbe dovuto solo verificare che ce ne fossero o no. In pratica basta aggiungere un semplice break
Codice sorgente - presumibilmente Algoritmi

  1. p2 <- 0
  2. per i<-1 to numero_di_lanci
  3.     A = array di 24 coppie di int casuali compresi tra 1 6
  4.     // Cioè una cosa del tipo [[1,1],[2,4],[1,9]...]
  5.     per ogni coppia in A
  6.         se coppia[1]=6 e coppia[2]=6 allora
  7.           p2 <- p2+1
  8.           break
  9. risultato = p2/numero_di_lanci


PM Quote