On 29 Nov, 23:31, marcofuics <marcofu..._at_netscape.net> wrote:
> http://it.wikipedia.org/wiki/Problema_di_Monty_Hall
>
> dice cosi':
>
> "...Nel gioco vengono mostrate al concorrente tre porte chiuse; dietro ad una si trova un'automobile, mentre ciascuna delle altre due nasconde una capra. Il giocatore pu scegliere una delle tre porte, vincendo il premio corrispondente. Dopo che il giocatore ha selezionato una porta, ma non l'ha ancora aperta, il conduttore dello show che conosce ci che si trova dietro ogni porta apre una delle altre due, rivelando una delle due capre, e offre al giocatore la possibilit di cambiare la propria scelta iniziale, passando all'unica porta restante..."
>
> Ora ci si chiede
>
> <<Cambiare porta migliora le chance del giocatore di vincere l'automobile?>>
>
> �La risposta s : cambiando le probabilit di successo passano da 1/3 a 2/3
Dato che anche a me sembra paradossale, come prima cosa faccio una
simulazione in VisualBasic5.0 (questo passa il convento) con 100.000
esperimenti:
Private Sub Command13_Click()
Dim C(3) As Boolean 'contenuti
Dim P(3) As Boolean 'porte
Dim D As Integer 'disposizione iniziale dell'auto 0,1,2
Dim S As Integer 'scelta iniziale del concorrente 0,1,2
Dim EP 'esperimenti positivi
EP = 0
For esperimento = 1 To 100000
For n = 0 To 2
C(n) = False
P(n) = False
Next n
D = Int(Rnd * 3) 'scelta casuale della posizione dell'auto.
C(D) = True
S = Int(Rnd * 3) 'scelta del concorrente
'Ora il presentatore apre una porta:
If Not C(S) Then 'nella scelta iniziale del concorrente non c'�
l'auto
For j = 0 To 2
If S <> j And Not C(j) Then P(j) = True 'apre l'altra dove
non c'� l'auto
Next j
Else 'nella scelta iniziale del concorrente c'� l'auto
For j = 0 To 2 'il presentatore apre a caso una delle altre
due
If S <> j Then
If Rnd < 0.5 Then
P(j) = True
Else
For k = 0 To 2
If S <> k And k <> j Then
P(k) = True
End If
Exit For
Next k
End If
Exit For
End If
Next j
End If
'Allora il concorrente sceglie la rimanente:
For j = 0 To 2
If Not P(j) And j <> S Then
S = j
Exit For
End If
Next j
'risultato incrementale
If C(S) Then EP = EP + 1
Next esperimento
'uscita:
Text1 = Str(EP) + Str(EP / esperimento * 100) + "%"
End Sub
RISULTATI:
66725 66.7%
Oh cacchio! E' vero! :-)
Ciao
Livio
Received on Fri Nov 30 2012 - 13:11:55 CET