Re: A me non sembra corretto

From: Chenickname <che.nickname_at_gmail.com>
Date: Tue, 4 Dec 2012 03:56:08 -0800 (PST)

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 Tue Dec 04 2012 - 12:56:08 CET

This archive was generated by hypermail 2.3.0 : Thu Nov 21 2024 - 05:10:44 CET