Tehetséggondozás az informatikában
Három kocka, várható érték
Ahogyan a bevezetésben már utaltunk rá, a valószínűségszámítás hajnalán
Cardano is, Galieli is foglalkozott azzal a kérdéssel, hogy három kockával
dobva milyen gyakran–milyen valószínűséggel kapjuk a lehetséges összegeket.
Ezzel kapcsolatban modellezhetünk egy egyszerű szerencsejátékot is. Ábel,
Bálint, Domonkos, Máté, Péter és Zalán játszik: valahányszor a három kocka
összege az egyikük által választott számot adja, a nyertes minden
játékostársától kap egy dukátot.
Az alapkérdés természetesen az lehet, hogy hosszabb távon ki nyer, de
emellett érdemes lehet azt is vizsgálni, hogy ha több napon át játszanak sok
fordulót, akkor mik lesznek az egyes napok „részeredményei”, azaz a hosszú
távon vesztes hányszor érezheti úgy, hogy van reménye a nyereségre, illetve
fordítva.
import random
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 program egy lehetséges kimenete:
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 10515 -113 85 67 -5 -23 -11
2 10391 -118 80 122 116 -88 -112
3 10501 -171 9 135 105 99 -177
4 10667 -146 -20 130 94 -56 -2
5 10520 -22 -28 44 80 -16 -58
6 10528 -93 -3 81 99 51 -135
7 10334 -64 -10 176 62 -10 -154
8 10547 -128 88 58 40 88 -146
9 10618 -111 -45 81 51 129 -105
10 10650 -165 -15 159 69 3 -51
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
43 145 258 458 671 947 1159 1311 1254 1165 977 685 442 279 157 49