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