Tehetséggondozás az informatikában
Két kocka: átlag és eloszlás
Az előző program minimális módosításával folytathatjuk a kísérletezést két
kockával.
Egy kocka –és kellően nagy esetszám– mellett jól felismerhetően egyhatod
körüli relatív gyakoriságokat kapunk; két kocka esetén 11-szeres, 21-szeres,
illetve 36-szoros értékeket is érdemes lehet feltüntetni (vagy természetesen
bármit, amit a diákok az összes lehetőség kapcsán felvetnek) – aztán persze
igyekezni kell olyan magyarázatot találni, amelyik legalább az egyik sor
esetén összeegyeztethető a megfigyelt hányadosokkal.
import random
def twodice():
db= [0]*13
dsum= 0
print('\nKét kockával dobunk, hányszor kapjuk a lehetséges összegeket?\n')
n= int(input('Hányszor dobjunk? '))
print()
for i in range(n):
d= random.randrange(6)+1 + random.randrange(6)+1
db[d]+= 1
dsum+= d
print("%8s%8s%8s" % ('n', 'összeg', 'átlag'))
print("%8i%8i%8.5f" % (n, dsum, dsum/n))
print()
print("%-24s" % ('összeg:'), end='')
for i in range(2, 13):
print("%8i" % (i), end='')
print()
print("%-24s" % ('esetszám:'), end='')
for i in range(2, 13):
print("%8i" % (db[i]), end='')
print()
print("%-24s" % ('gyakoriság:'), end='')
for i in range(2, 13):
print(" %5.2f%%" % (db[i]/n*100), end='')
print()
print("%-24s" % ('11-szer:'), end='')
for i in range(2, 13):
print(" %6.3f" % (db[i]/n*11), end='')
print()
print("%-24s" % ('21-szer:'), end='')
for i in range(2, 13):
print(" %6.3f" % (db[i]/n*21), end='')
print()
print("%-24s" % ('36-szor:'), end='')
for i in range(2, 13):
print(" %6.3f" % (db[i]/n*36), end='')
print('\n')
for i in range(2, 13):
print('%2i: %s' % (i, 'X'*round(db[i]/n*480)))
twodice()
És ezek után egy kimenet:
Két kockával dobunk, hányszor kapjuk a lehetséges összegeket?
Hányszor dobjunk? 1000000
n összeg átlag
1000000 7000267 7.00027
összeg: 2 3 4 5 6 7 8 9 10 11 12
esetszám: 27609 55377 83781 111098 139127 166841 138374 110762 83526 55515 27990
gyakoriság: 2.76% 5.54% 8.38% 11.11% 13.91% 16.68% 13.84% 11.08% 8.35% 5.55% 2.80%
11-szer: 0.304 0.609 0.922 1.222 1.530 1.835 1.522 1.218 0.919 0.611 0.308
21-szer: 0.580 1.163 1.759 2.333 2.922 3.504 2.906 2.326 1.754 1.166 0.588
36-szor: 0.994 1.994 3.016 4.000 5.009 6.006 4.981 3.987 3.007 1.999 1.008
2: XXXXXXXXXXXXX
3: XXXXXXXXXXXXXXXXXXXXXXXXXXX
4: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
6: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
11: XXXXXXXXXXXXXXXXXXXXXXXXXXX
12: XXXXXXXXXXXXX