![]() |
würfeln mit 2 Würfeln (Gauss-Verteilung)
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. |
Re: würfeln mit 2 Würfeln (Gauss-Verteilung)
Delphi-Quellcode:
zufall:=(random(6)+1)+(random(6)+1);
// Dein Array muss jetzt von 2 bis 12 gehen | Die Case Anweisung brauchst du nicht: Inc(Zahl[Zufall]); // Erhöht an der Stelle Zufall um 1 end; |
Re: würfeln mit 2 Würfeln (Gauss-Verteilung)
danke für die schnelle Antwort. So jetzt habe ich das nächste Problem, und zwar möchte ich die Ergebnisse der Prozentverteilung als Säulendiagramm anzeigen lassen. Jedoch habe ich keine Ahnung, wie ich das anstellen kann. Hat da jemand eine Idee??
|
Re: würfeln mit 2 Würfeln (Gauss-Verteilung)
Entweder
![]() |
Re: würfeln mit 2 Würfeln (Gauss-Verteilung)
kannst du mir sagen ob ich auf dem richtigen weg bin oder ganz falsch. ich hab sowas noch nie gemacht.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin image2.canvas.rectangle(5,(zahl[1])*10,40,10); image2.canvas.rectangle(80,(zahl[2])*10,50,10); end; |
Re: würfeln mit 2 Würfeln (Gauss-Verteilung)
Jop, das ist es! Kannst es auch in ner Schleife machen!
Du nimmst jetzt aber nicht die Prozentwerte, sondern die Absoluten! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz