Einzelnen Beitrag anzeigen

turningdog

Registriert seit: 13. Mai 2007
3 Beiträge
 
#1

würfeln mit 2 Würfeln (Gauss-Verteilung)

  Alt 14. Mai 2007, 09: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.
  Mit Zitat antworten Zitat