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