Simulácia¶
Podobných simulácii sme už na minulej hodine niekoľko robili, nemalo by ísť o nič nové. Pozorne si ale kód prečítajte, aby ste mu dobre rozumeli a vedeli aj sami napísať niečo podobné.
import random
HLAVA = "H" # uložíme si tieto dva špeciálne znaky, aby sa nám lepšie čítal kód
ZNAK = "Z"
def hadz_hlava_hlava_proti_hlava_znak():
posledny_hod = ""
while True:
hod = HLAVA if random.random() < 0.5 else ZNAK
# porovnáme minulý hod a súčasný proti hlave a znaku.
if [posledny_hod, hod] == [HLAVA, ZNAK]:
return 1 # vyhral prvý hráč
# porovnáme minulý hod a súčasný proti hlave a hlave.
if [posledny_hod, hod] == [HLAVA, HLAVA]:
return 0 # vyhral druhý hráč
posledny_hod = hod # ak nikto nevyhral, súčasným hodom si prepíšeme posledný
hadz_hlava_hlava_proti_hlava_znak()
1
N = 10000
sum(hadz_hlava_hlava_proti_hlava_znak() for i in range(N)) / N
0.5088