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