AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lottozahlen

Ein Thema von bonanza · begonnen am 29. Jan 2006 · letzter Beitrag vom 31. Jan 2006
 
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Lottozahlen

  Alt 29. Jan 2006, 11:55
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?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
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