Tehetséggondozás az informatikában

Három kocka, igazságos játék

Cardano bevezetésben már említett műveiből az is kitűnik, hogy a szerző világosan látta: a kockadobás különböző kimeneteinek valószínűsége hogy aránylik egymáshoz, illetve fölismerte azt is, hogy ennek ismeretében milyen feltételek mellett válik igazságossá a játék.

Kísérletező kedvű diákok ráérezhetnek arra, illetve kiszámolhatják azt, hogy milyen tétek mellett játszanak egyenlő esélyekkel a játékosok. Ilyen feltételek mellett modellezi a háromkockás játékot a következő program.

def threedice():
    dP, dÁ, dB, dZ, dM, dD=  8, 9, 10, 11, 12, 13

    db= [0]*19

    n= int(input('Hány napon át játsszunk? '))
    m= int(input('Hány játékot játsszunk naponta? '))
    print("%8s%8s%8s%8s%8s%8s%8s%8s" % ('n', 'dsum', 'P- 8', 'Á- 9', 'B-10', 'Z-11', 'M-12', 'D-13'))
    for i in range(n):
        Á, B, D, M, P, Z, dsum= 0, 0, 0, 0, 0, 0, 0
        for j in range(m):
            d= random.randrange(6)+1 + random.randrange(6)+1 + random.randrange(6)+1
            db[d]+= 1
            dsum+= d
            if d==dÁ:
                Á+= 5; B-= 1; D-= 1; M-= 1; P-= 1; Z-= 1
            elif d==dB:
                Á-= 1; B+= 5; D-= 1; M-= 1; P-= 1; Z-= 1
            elif d==dD:
                Á-= 1; B-= 1; D+= 5; M-= 1; P-= 1; Z-= 1
            elif d==dM:
                Á-= 1; B-= 1; D-= 1; M+= 5; P-= 1; Z-= 1
            elif d==dP:
                Á-= 1; B-= 1; D-= 1; M-= 1; P+= 5; Z-= 1
            elif d==dZ:
                Á-= 1; B-= 1; D-= 1; M-= 1; P-= 1; Z+= 5
        print("%8d%8d%8d%8d%8d%8d%8d%8d" %(i+1, dsum, P, Á, B, Z, M, D))
    print()
    for i in range(3, 19):
        print("%8i" % i, end='')
    print()
    for i in range(3, 19):
        print("%8i" % db[i], end='')
    print('\n')

threedice()
A számok már viszonylag kis dobásszám esetén is önmagukért beszélnek:
Hány napon át játsszunk? 10
Hány játékot játsszunk naponta? 1000
       n    dsum    P- 8    Á- 9    B-10    Z-11    M-12    D-13
       1   10402       2      -3       0       0       3      -1
       2   10622      -4      -1       0       0       6       0
       3   10281       0       1       1       0      -2      -1
       4   10580      -1       0      -4       1       1       2
       5   10429      -3       1       4       0      -1       0
       6   10435      -3       4      -2       1       0       0
       7   10694      -4       0       2       0       1      -1
       8   10478       0      -1      -2       2      -1       4
       9   10516       0       0      -1       2       0       0
      10   10409       1       0       0       0       0      -2

       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18
      44     152     259     464     716     929    1169    1244    1288    1202     966     696     424     280     118      49