Tehetséggondozás az informatikában
Egy kocka: átlag és eloszlás
Kézenfekvőnek látszik tehát, hogy ha nagy számú kísérletet szeretnénk
elvégeztetetni, akkor bízzuk a munkát számítógépre.
(Joggal vetődik fel persze a kérdés, hogy a számítógép, illetve a különböző
programozási nyelvek felhasználta algoritmusok mennyire megbízhatóan adnak
véletlenszerű számokat; a továbbiakban feltételezzük, hogy valamilyen
szinten elfogadható a véletlennek mondott számsorozat előállítása.)
Akár programozni nem tudó kisdiákoknak is elmagyarázhatjuk egy néhány soros
program működését, majd szemléltethetjük azzal a kockadobással kapcsolatos
alapvető kérdéseket; a végén akár egy nem különösebben látványos, de könnyen
elkészíthető és az egyenletes eloszlást azért tükröző diagramot is
megjeleníthetünk:
import random
def onedice():
db= [0]*7
dsum= 0
print('\nEgy kockával dobunk, hányszor kapjuk a különböző kimeneteket?\n')
n= int(input('Hányszor dobjunk? '))
print()
for i in range(n):
d= 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" % ('dobott szám:'), end='')
for i in range(1, 7):
print("%8i" % (i), end='')
print()
print("%-24s" % ('esetszám:'), end='')
for i in range(1, 7):
print("%8i" % (db[i]), end='')
print()
print("%-24s" % ('gyakoriság:'), end='')
for i in range(1, 7):
print(" %5.2f%%" % (db[i]/n*100), end='')
print()
print("%-24s" % ('6-szor:'), end='')
for i in range(1, 7):
print(" %6.3f" % (db[i]/n*6), end='')
print('\n')
for i in range(1, 7):
print('%2i: %s' % (i, 'X'*round(db[i]/n*480)))
onedice()
És ezek után egy kimenet:
Egy kockával dobunk, hányszor kapjuk a különböző kimeneteket?
Hányszor dobjunk? 1000000
n összeg átlag
1000000 3500457 3.50046
dobott szám: 1 2 3 4 5 6
esetszám: 166873 166417 166112 167201 166772 166625
gyakoriság: 16.69% 16.64% 16.61% 16.72% 16.68% 16.66%
6-szor: 1.001 0.999 0.997 1.003 1.001 1.000
1: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
6: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX