A valószínűségszámításban az egyik leghíresebb és legnehezebben átlátható klasszikus feladvány a Monty Hall-paradoxon. Ez egy olyan valószínűségi fejtörő, amely még a matematikusokat is zavarba ejti, de Python segítségével könnyen bebizonyítható a helyes stratégia.A feladat a következő: adott 3 ajtó. Az egyik mögött egy autó van (fődíj), a másik kettő mögött kecske. Te választasz egy ajtót. Monty (a műsorvezető, aki tudja, mi van a zárt ajtók mögött) kinyitja az egyik olyan ajtót, am mögött kecske van. Ezután megkérdezi: „Meg akarod változtatni a választásodat a másik csukott ajtóra?”A válasz: Igen, mindig érdemes váltani, mert így a nyerési esélyed 33%-ról 66%-ra nő.Az alábbi Python program szimulálja ezt a folyamatot több ezer lejátszással, hogy bizonyítsa a fenti állítást.
-----------
import random
def monty_hall_sim(jatekok_szama):
valtoztatassal_nyert = 0
nem_valtoztatassal_nyert = 0
for _ in range(jatekok_szama):
# Az autó helye (1, 2 vagy 3)
auto_helye = random.randint(1, 3)
# A játékos kezdeti választása
jatekos_valasztasa = random.randint(1, 3)
# Monty kinyit egy ajtót (nem a nyertes, és nem a játékos által választott)
monty_altal_nyitott = [ajto for ajto in [1, 2, 3] if ajto != auto_helye and ajto != jatekos_valasztasa][0]
# A megmaradó ajtó, amit a játékos választhatna, ha vált
megmarado_ajto = [ajto for ajto in [1, 2, 3] if ajto != jatekos_valasztasa and ajto != monty_altal_nyitott][0]
# Eredmény, ha nem változtat
if jatekos_valasztasa == auto_helye:
nem_valtoztatassal_nyert += 1
# Eredmény, ha változtat
if megmarado_ajto == auto_helye:
valtoztatassal_nyert += 1
# Eredmények kiíratása
print(f"Összes játék: {jatekok_szama:,}")
print(f"Győzelmek váltás nélkül: {nem_valtoztatassal_nyert:,} alkalommal (~{nem_valtoztatassal_nyert / jatekok_szama * 100:.1f}%)")
print(f"Győzelmek váltással: {valtoztatassal_nyert:,} alkalommal (~{valtoztatassal_nyert / jatekok_szama * 100:.1f}%)")
# A szimuláció futtatása 100 000 játékkal
monty_hall_sim(100000)
--------------
Output:
Összes játék: 100,000
Győzelmek váltás nélkül: 33,333 alkalommal (~33.3%)
Győzelmek váltással: 66,667 alkalommal (~66.7%)
-----------------
https://onecompiler.com/python#draft-zge8
Nincsenek megjegyzések:
Megjegyzés küldése