Lanciare un dado

Vedi la discussione.

Le sei facce del dado sono equiprobabili, è necessario un generatore di numeri interi con distribuzione uniforme in [1,6]

import random

LANCI=10

for i in range(LANCI):
    esito=random.randint(1, 6)
    print(i, esito)

Media

Calcolo della media

import random

LANCI=10

somma=0
for i in range(LANCI):
    esito  = random.randint(1, 6)
    somma += esito
    print(i, esito, somma)
print()
print("Media =", somma/LANCI)

Deviazione standard

Calcolo della deviazione standard

  • per avere risultati significativi i lanci devono essere almeno 10000
  • le uscite sono memorizzate in una lista
  • per calcolare la varianza è necessario calcolare la somma dei quadrati degli scarti
  • la deviazione standard è la radice quadrata…
import math
import random

LANCI =100000
USCITE=[]

for i in range(LANCI): 
    esito = random.randint(1,6) 
    USCITE.append(esito)

somma=0
for x in USCITE:
    somma += x

media=somma/LANCI
print("Media =", media)

somma=0
for x in USCITE:
    somma += (x-media)**2

varianza=somma/LANCI
print("Varianza =", varianza)

dev_std=math.sqrt(varianza)
print("Dev. std. =", dev_std)

Frequenze assolute

Conteggio dei lanci per ogni faccia.
Verifichiamo, sperimentalmente, se gli esiti da 1 a 6 hanno la stessa probabilità

...

#        1 2 3 4 5 6
CONTO=[0,0,0,0,0,0,0]

for x in USCITE
    CONTO[x] += 1

for i in range(1,7):
    print(i, CONTO[i])

Frequenze relative

Conteggio dei lanci per ogni faccia e percentuali corrispondenti

...
for i in range(1,7):
    print("%d: %3d - %3.1f%%" %(i, CONTO[i], 100*CONTO[i]/LANCI))

matplotlib

import matplotlib.pyplot as plt
import random
 
LANCI=1000

DADO =range(7)
CONTO=[0,0,0,0,0,0,0]
for i in range(LANCI):
    esito=random.randint(1,6)
    CONTO[esito]+=1

plt.grid(which="major")
plt.bar(DADO, CONTO)
plt.title("Un dado")

plt.show()