Lanciare un dado più volte e conteggiare le uscite
- Ciascuna faccia del dado ha probabilità 1/6 (16,6… %)
- Quanti lanci sono necessari per avere dati attendibili?
- Frequenze assolute e/o relative?
Type CONTATORI = Array[1..6] of LongInt; Var C1, C2, C3 : CONTATORI; Procedure Vedi(CONTA: CONTATORI; n: Longint); Var i: Byte; x: Real; Begin Writeln('n=', n); For i:=1 to 6 do Begin x:=100*CONTA[i]/n; Writeln(i:8, ': ', x:6:2, ' %'); End; End; Procedure LanciaDado(Var CONTA: CONTATORI; n: Longint); Var i : Longint; esito: Byte; Begin For i:=1 to 6 do // inizializza i contatori CONTA[i]:=0; For i:=1 to n do // lancia il dado n volte Begin esito:=Random(6)+1; Inc(CONTA[esito]); End; End; Begin // Numero di lanci sempre più grande: 10, 100, 1.000, 10.000 ... LanciaDado(C1, 10); Vedi(C1, 10); LanciaDado(C2, 100); Vedi(C2, 100); LanciaDado(C3, 1000); Vedi(C3, 1000); Readln; End.
Output
n=10 1: 0.00 % 2: 0.00 % 3: 10.00 % 4: 50.00 % 5: 10.00 % 6: 30.00 % n=100 1: 16.00 % 2: 12.00 % 3: 20.00 % 4: 20.00 % 5: 17.00 % 6: 15.00 % n=1000 1: 16.60 % 2: 16.30 % 3: 17.50 % 4: 15.80 % 5: 16.20 % 6: 17.60 %
Confrontando i risultati di 2 esperimenti
// ... Vedi2(C1, 10, C2, 100); Vedi2(C1, 10, C3, 1000); Vedi2(C2, 100, C3, 1000); Readln;
o di 3
// ... Vedi3(C1, 10, C2, 100, C3, 1000); Readln;
risulta più evidente la tendenza delle frequenze relative verso la probabilità teorica
10 100 1000 1: 0.00 % 16.00 % 16.60 % 2: 0.00 % 12.00 % 16.30 % 3: 10.00 % 20.00 % 17.50 % 4: 50.00 % 20.00 % 15.80 % 5: 10.00 % 17.00 % 16.20 % 6: 30.00 % 15.00 % 17.60 %