Zitat von
bonanza:
Hi,
Hier mein bisheriges Programm. Aber irgendwie spuckt der da komische zahlen bei der häufigkeit aus.
Und was für komische Zahlen?
Zitat von
bonanza:
Auch wäre es super, wenn jemand weiß, wie ich auch auf das 1. Item der listbox zugreifen kann.
Wo ist das Problem? Du greifst in deinem Code doch auf ein Item der ListBox zu (ListBox1.Items[zz]). Das ist das (zz+1)'te Element, da die Items der ListBox 0-basiert sind. Das erste Element hat daher den Index 0.
Zitat von
bonanza:
Wäre euch sehr dankbar, wenn jemand mal gucken könnte, wo da der fehler ist.
Der Fehler ist genau das, was ich ein Quote weiter oben geschrieben habe. Die Items sind 0-basiert, dein Array 1-basiert. Du beschreibst also in der ListBox den falschen Index. (Siehe Zeile 34ff)
Delphi-Quellcode:
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.
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.
//Edit:
Code- in Delphi-Tags gesetzt, wozu ham wir die denn?