Esercizio - Rovina del giocatore alla roulette - probabilità di vittoria e durata attesa
Testo. Un giocatore parte con euro e punta euro a partita. Si ferma quando arriva a euro o a .
- Gioco equo (): probabilità di arrivare a e numero medio di partite.
- Roulette americana (38 caselle, 18 rosse), puntando sempre sul rosso: . Stesse domande.
- Con la stessa roulette, un secondo giocatore parte da euro e vuole arrivare a ; un terzo parte da e vuole arrivare a . Probabilità di successo e durata.
- Nel gioco equo, dimostrare con un argomento alternativo (valore atteso del capitale) e controllare che sia coerente con la formula.
- Verificare con una simulazione.
Soluzione
1. Gioco equo, , : e partite.
2. , quindi , . (la semplificazione: .) La durata è partite. Con lo stesso capitale e lo stesso traguardo, un vantaggio della banca di soli punti percentuali per partita () fa scendere la probabilità di vittoria da a circa .
3. Giocatore da a (, ): e , quindi , e partite. Giocatore da a : , e partite: quasi sempre si perde tutto in circa partite. Con la probabilità di vittoria dipende in modo esponenziale dalla distanza dal traguardo: per grande vale circa .
4. Sia il capitale dopo partite nel gioco equo: , quindi per ogni finché il gioco continua. Il gioco termina quasi certamente in tempo finito con (la durata è finita), e il capitale è limitato in ; si può quindi passare al limite, (teorema di arresto per martingale limitate). Ma , quindi e ✓. Per la quantità conservata è : perché ; con si ottiene , cioè ✓ (la stessa formula).
5. Simulazione (seme fisso).
import random
rng = random.Random(1)
def parti(i, N, p):
t = 0
while 0 < i < N:
i += 1 if rng.random() < p else -1
t += 1
return i == N, t
def formula(i, N, p):
if p == 0.5: return i / N, i * (N - i)
r = (1 - p) / p
P = (1 - r**i) / (1 - r**N)
return P, (i - N * P) / (1 - 2 * p)
for (i, N, p) in [(10, 20, 0.5), (10, 20, 9 / 19), (90, 100, 9 / 19), (10, 100, 9 / 19)]:
T = 40000 if N <= 20 else 5000
ris = [parti(i, N, p) for _ in range(T)]
vit = sum(v for v, _ in ris) / T
dur = sum(t for _, t in ris) / T
print((i, N), "formula", [round(x, 4) for x in formula(i, N, p)], " simulazione", round(vit, 4), round(dur, 1))Output tipico (varia con il seme; l'ultimo caso ha probabilità troppo piccola per essere vista in prove, ma la durata sì):
(10, 20) formula [0.5, 100] simulazione ~0.50 ~100
(10, 20) formula [0.2585, 91.757] simulazione ~0.26 ~91.7
(90, 100) formula [0.3487, 1047.5438] simulazione ~0.35 ~1047
(10, 100) formula [0.0, 189.9057] simulazione 0.0 ~190Versione ripasso
- Gioco equo: , : da a , , .
- Roulette: , , ; , .
- Da a : (perché ), : vittoria dal al .
- Traguardo : da , e ; da , e . Per grande : decade in modo esponenziale.
- Martingala: gioco equo (arresto, capitale limitato); per si conserva (), quindi .
- Errori tipici: dimenticare che con conta e non ; usare fuori dal gioco equo; confondere vittoria con "non rovina" quando è infinito.