Registriert seit: 13. Mai 2007
3 Beiträge
|
würfeln mit 2 Würfeln (Gauss-Verteilung)
14. Mai 2007, 10:53
Hi, ich will ein Programm schreiben das einmal alle Zufallszahlen ausgibt, die mit einem Würfel gewürfelt wurden und einmal wenn 2 Würfel verwendet wurden. Das mit einem Würfel funktioniert schon. Hat einer eine Idee, wie ich mein Programm umschreiben kann da mit das gleich auch noch mit 2 Würfeln klappt? Hier mein Quelltext:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Table1: TStringGrid;
MainMenu1: TMainMenu;
Timer1: TTimer;
Datei1: TMenuItem;
beenden1: TMenuItem;
neu1: TMenuItem;
ausfhren1: TMenuItem;
einmaligesWrfeln1: TMenuItem;
zweiWrfel1: TMenuItem;
N1: TMenuItem;
Eanz: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure einmaligesWrfeln1Click(Sender: TObject);
procedure beenden1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure zweiWrfel1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
zufall:integer;
i:integer;
n:integer;
zahl:array[1..6]of integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Table1.Cells[0,0]:='Augenzahl';
form1.Table1.Cells[1,0]:='Absolute Häufigkeit';
form1.Table1.Cells[2,0]:='Relative Häufigkeit';
form1.Table1.Cells[3,0]:='Prozentuale Häufigkeit';
i:=1;
for i:=1 to 6 do
begin
Table1.Cells[0,i]:=inttostr(i);
end;
end;
procedure TForm1.einmaligesWrfeln1Click(Sender: TObject);
begin
i:=1;
n:=strtoint(Eanz.text);
for i:=i to 6 do
begin
Table1.Cells[1,i]:='';
Table1.Cells[2,i]:='';
Table1.cells[3,i]:='';
zahl[i]:=0;
end;
i:=1;
for i:=1 to n do
begin
zufall:=random(6)+1;
case zufall of
1: zahl[1]:=zahl[1]+1;
2: zahl[2]:=zahl[2]+1;
3: zahl[3]:=zahl[3]+1;
4: zahl[4]:=zahl[4]+1;
5: zahl[5]:=zahl[5]+1;
6: zahl[6]:=zahl[6]+1;
end;
end;
i:=1;
for i:=1 to 6 do
begin
Table1.Cells[1,i]:=inttostr(zahl[i]);
Table1.Cells[2,i]:=floattostrf(zahl[i]/n,fffixed,15,2);
Table1.cells[3,i]:=floattostrf(zahl[i]*100/n,fffixed,15,2)+'%';
end;
end;
procedure TForm1.beenden1Click(Sender: TObject);
begin
close
end;
procedure TForm1.zweiWrfel1Click(Sender: TObject);
begin
i:=1;
n:=strtoint(Eanz.text);
for i:=i to 6 do
begin
Table1.Cells[1,i]:='';
Table1.Cells[2,i]:='';
Table1.cells[3,i]:='';
zahl[i]:=0;
end;
i:=1;
for i:=1 to n do
begin
zufall:=random(6)+1;
case zufall of
1: zahl[1]:=zahl[1]+1;
2: zahl[2]:=zahl[2]+1;
3: zahl[3]:=zahl[3]+1;
4: zahl[4]:=zahl[4]+1;
5: zahl[5]:=zahl[5]+1;
6: zahl[6]:=zahl[6]+1;
end;
end;
i:=1;
for i:=1 to 6 do
begin
Table1.Cells[1,i]:=inttostr(zahl[i]);
Table1.Cells[2,i]:=floattostrf(zahl[i]/n,fffixed,15,2);
Table1.cells[3,i]:=floattostrf(zahl[i]*100/n,fffixed,15,2)+'%';
end;
end;
end.
|
|
Zitat
|