![]() |
Lottozahlen
Hi,
ich will ein programm schrieben, dass 10.000 mal lottozahlen generiert. dann möchte ich wissen, wie oft jede zahl gezogen wurde. Hier mein bisheriges Programm. Aber irgendwie spuckt der da komische zahlen bei der häufigkeit aus. Auch wäre es super, wenn jemand weiß, wie ich auch auf das 1. Item der listbox zugreifen kann. Wäre euch sehr dankbar, wenn jemand mal gucken könnte, wo da der fehler ist. danke schonmal im voraus bonanza
Code:
var
Form1: TForm1; lottozahlen: Array[1..49] of Boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i,j,k, zz: integer; begin randomize; ListBox1.Items.Clear; for i := 1 to 49 do ListBox1.Items.Add(inttostr(0)); for k:= 1 to 10000 do begin for i := 1 to 49 do lottozahlen[i]:= false; for i := 1 to 6 do begin j:=0; repeat zz:= random(48)+1; IF (lottozahlen[zz]=false) then begin lottozahlen[zz]:= true; ListBox1.Items[zz]:= inttostr(strtoint(ListBox1.Items[zz])+1); j := 1; end; until (j=1); end; // von (i=>6) end; // von (k=>10000) end; end. |
Re: Lottozahlen
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Ich konnte jetzt aber sonst auf die Schnelle und ohne es zu testen keinen Fehler feststellen. Vielleicht is mir aber auch einfach was durchgerutscht. Schreib doch einfach mal - falls das hier nichts geholfen hat - was genau so seltsam an der Verteilung ist.
var
Form1: TForm1; lottozahlen: Array[1..49] of Boolean; implementation {$R *.dfm} procedure TForm1.OnCreate(Sender: TObject); Begin randomize; //Randomize nur einmal im Programm aufrufen !!! End; procedure TForm1.Button1Click(Sender: TObject); var i, k, zz: Integer; gesetzt : Boolean; begin ListBox1.Items.Clear; for i := 1 to 49 do ListBox1.Items.Add('0'); //Warum hier erst IntToStr aufrufen? //Geht doch auch direkt for k := 1 to 10000 do begin for i := 1 to 49 do lottozahlen[i] := false; for i := 1 to 6 do begin //Ist meiner Meinung nach sinnvoller mit nem Boolean gesetzt := false; repeat zz:= random(48)+1; if (not lottozahlen[zz]) then begin lottozahlen[zz] := true; //ListBox1.Items ist 0-basiert, dein Array 1-basiert, daher mußt //du den Index anpassen ListBox1.Items[zz-1]:= inttostr(strtoint(ListBox1.Items[zz-1])+1); gesetzt := true; end; until gesetzt end; // von (i=>6) end; // von (k=>10000) end; end. //Edit: Code- in Delphi-Tags gesetzt, wozu ham wir die denn? :mrgreen: |
Re: Lottozahlen
[quote="leddl"]
Zitat:
0 1228 1258 1246 1246 usw insgesamt ja 49 aber alle über 1200 und das kann ja bei 10.000 versuchen nicht hinkommen. Zitat:
ja und wie verbessere ich dann mein programm, sodass das auch funktioniert? |
Re: Lottozahlen
[quote="bonanza"]
Zitat:
Zitat:
|
Re: Lottozahlen
aber jetzt wird ja nie etwas in das item 49 geschrieben, denn wir berechnen ja nur zufallszahlen von 1-49 und wnen wir dann immer -1 rechnen bringt das ja nicht wirklich was oder?
|
Re: Lottozahlen
Hast dus mal getestet? :roll: Zähl mal die Anzahl der Elemente und vergleiche: 0,1,...,48 <=> 1,2,...,49 :zwinker:
|
Re: Lottozahlen
hmm wenn ich alle items dann addiere (also vorher -1000 rechne) kommt da 12.000 raus :-\
|
Re: Lottozahlen
Du hast 49 Zahlen, die alle etwa 1.200 mal gezogen werden. => 49 * 1200 ~ 60.000
Es wird 10.000 mal gezogen, wobei bei jeder Ziehung 6 Zahlen gezogen werden => 10.000 * 6 = 60.000 Wie du jetzt auf deine 12.000 kommst, weiß ich nich. Warum überhaupt minus 1000? :gruebel: |
Re: Lottozahlen
Zitat:
Random(48 ) ergibt Real im Bereich von 0 <= X < 48. Der ganzahlige Anteil liegt dann bei 0 bis 47. Bei der Addition mit 1 ergibt sich ein Zahlenbereich von 1 bis 48. Die 49 kommt nicht vor. Folge dessen ist, dass die erste Summe 0 ist und sich trotz unterschiedlicher Terminierung im ersten Source keine Exception ergibt, weil das nicht existierende ListBox1.Items[49] gar nicht angesprochen wird. So ergibt sich 48 Zahlen mal 1000 gleich 48000, addiert mit den 12000 sind es 60000. Nachtrag: Zitat:
|
Re: Lottozahlen
ok danke erstmal für eure hilfe, aber ich brauche ja 49 zahlen ... was muss ich denn umändern, damit herausbekomme, wieoft jede der 49 zahlen gezogen wurde ?
mfg bonanza |
Re: Lottozahlen
Zitat:
Zitat:
//Edit: Zitat:
|
Re: Lottozahlen
Zitat:
Zitat:
Zitat:
|
Re: Lottozahlen
Zitat:
|
Re: Lottozahlen
Dann war Deine Frage bei mir falsch angekommen. Eine Antwort kann Dir wahrscheinlich auch nur bonanza selbst geben, denn mir verschließt sich im Moment auch der Sinn dieser Operation.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 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