vba4

calcola frequenza lancio dado e disegna grafico frequenze VBA EXCEL PASCAL


Private Sub CommandButton1_Click()
'genera numeri casuali tra 1 e 6 con lancio dado
'calcola frequenza e visualizza per ogni numero
'disegna grafico numero,frequenza con Linee,istogrammi
Dim numero As Double
Dim f1, f2, f3, f4, f5, f6 As Integer
Dim k As Integer
Dim h As Integer
Dim lanci As Integer
'inserire numero di lanci da eseguire
lanci = Cells(2, 2)  ' genera numeri casuali'
For k = 1 To lanci
Cells(k, 1) = Int(Rnd() * 6 + 1)
h = Cells(k, 1)      ' calcola frequenze '
Select Case h
Case 1
 f1 = f1 + 1
Case 2
 f2 = f2 + 1
Case 3
f3 = f3 + 1
Case 4
f4 = f4 + 1
Case 5
f5 = f5 + 1
Case 6
f6 = f6 + 1
End Select
Next k
'visualizza frequenze per lanci
Cells(1, 4) = "f1"
Cells(2, 4) = "f2"
Cells(3, 4) = "f3"
Cells(4, 4) = "f4"
Cells(5, 4) = "f5"
Cells(6, 4) = "f6"
Cells(1, 5) = 1
Cells(2, 5) = 2
Cells(3, 5) = 3
Cells(4, 5) = 4
Cells(5, 5) = 5
Cells(6, 5) = 6
Cells(1, 6) = f1
Cells(2, 6) = f2
Cells(3, 6) = f3
Cells(4, 6) = f4
Cells(5, 6) = f5
Cells(6, 6) = f6
End Sub

creare PULSANTE ,scrivere numero lanci in B2,clic per risultati,selezionare

  A B C D E F
1 4 lanci=   f1 1 315
2 7 2000   f2 2 308
3 4     f3 3 358
4 3     f4 4 340
5 2     f5 5 330
6 1     f6 6 349
altri numeri generati in colonna A non visualizzati nello schema

EXCEL

scrivere formula per uscita numero casuale in A1 =INT(CASUALE()*6+1)

e ricopiarla con MODIFICA-SOSTITUISCI in tutte le celle A1..F10

scrivere in A12 la formula per leggere i valori =CONTA.SE(A1:F10;"=1")

e copiarla modificata nelle celle A12..F12 per calcolo frequenze:eseguire grafico

	A	B	C	D	E	F

1	3	4	5	1	6	6
2	2	3	6	2	1	3
3	3	6	4	3	6	1
4	1	2	2	1	6	3
5	6	5	4	3	4	2
6	6	1	1	5	3	3
7	6	2	1	5	4	2
8	2	2	1	6	2	2
9	1	4	2	3	6	4
10	3	4	2	1	6	3
11
12	11	13	12	8	4	12 FREQUENZE
13
14	1	11		f1
15	2	13		f2
16	3	12		f3		
17	4	8		f4
18	5	4		f5
19	6	12		f6


=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)

=CONTA.SE(A1:F10;"=1")	=CONTA.SE(A1:F10;"=2")	=CONTA.SE(A1:F10;"=3")

14	1	=A12	F1
15	2	=B12	F2
16	3	=C12	F3
17	4	=D12	F4
18	5	=E12	F5
19	6	=F12	F6
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)
=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)	=INT(CASUALE()*6+1)

=CONTA.SE(A1:F10;"=4")	=CONTA.SE(A1:F10;"=5")	=CONTA.SE(A1:F10;"=6")


PASCAL

program pro8;
uses crt,graph;
var a,b,c:integer  ;
    media:real;
    sc,tp:integer;
    drive:string;
    somma,f1,f2,f3,f4,f5,f6:integer;
    g1,g2,g3,g4,g5,g6:string;

procedure grafica;
var sc,tp:integer;
    drive:string;
begin
sc:=0;
tp:=0;
drive:='c:\tp\bgi';
initgraph(sc,tp,drive);
end;

procedure calcola;
var n:integer;
 begin
  (* possibile cambiare n,ma ninore di 2000 per grafica..*)
  write('numero lanci <200 =? ');readln(n);
  for a:=1 to n do
  begin
  b:=(random(6)+1);
  somma:=somma+b;
  case b of
  1:f1:=f1+1;
  2:f2:=f2+1;
  3:f3:=f3+1;
  4:f4:=f4+1;
  5:f5:=f5+1;
  6:f6:=f6+1;
  end;
  end;

 media:=somma/n;
 writeln('media=',media:6:2);
 writeln('numero uscito e frequenza');
 writeln('1=',f1);
 writeln('2=',f2);
 writeln('3=',f3);
 writeln('4=',f4) ;
 writeln('5=',f5)  ;
 writeln('6=',f6) ;
 str(f1,g1);
 str(f2,g2);
 str(f3,g3);
 str(f4,g4);
 str(f5,g5);
 str(f6,g6);
 readln;
 end;

 procedure disegna;
 begin
 line(80,300,80,50);
 line(80,300,300,300);
 line(100,300,100,300-f1);
 line(130,300,130,300-f2);
 line(160,300,160,300-f3);
 line(190,300,190,300-f4);
 line(220,300,220,300-f5);
 line(250,300,250,300-f6);
 outtextxy(100,350,'f1');
 outtextxy(130,350,'f2');
 outtextxy(160,350,'f3');
 outtextxy(190,350,'f4');
 outtextxy(220,350,'f5');
 outtextxy(250,350,'f6');
 outtextxy(100,380,g1);
 outtextxy(130,380,g2);
 outtextxy(160,380,g3);
 outtextxy(190,380,g4);
 outtextxy(220,380,g5);
 outtextxy(250,380,g6);
 readln;
 end;

 begin
 clrscr;
 calcola;
 grafica;
 disegna;
 closegraph;
 end.

run
numero lanci <200 =? 1000
media=  3.47
numero uscito e frequenza
1=175
2=163
3=176
4=154
5=170
6=162

inizio