Thema: Delphi Ordung muss sein

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#49

Re: Ordung muss sein

  Alt 5. Okt 2003, 18:33
Zitat von negaH:
...Da aber selbst mich die ganzen Diskussionen verwirren, werde ich erstmal meine schlauen Bücher befragen müssen...


Das mit dem mischen der Zahlen ist überflüssig. Das passiert ja durch das random. Und durch den Ring kann es theoretisch auch mit random (10000) passieren. Dann dreht sich die "richtige" Lottokugel eben den ganzen Tag. Das ganze geht dann ähnlich wie bei einem Glücksrad.

Ich glaube aber, daß einige hier nicht wissen, was ein Ring ist. Das ist eine verkettete Liste, bei der zum Schluß das Ende einen Zeiger auf den Anfang hat. Wenn ich nun mit random (100) arbeite kann ich ganz einfach durch
Delphi-Quellcode:
r := random (100);
for i := 1 to r do begin
  vorgaenger := ring;
  ring := ring^.naechst;
end;
die Position in dem Ring um r Positionen verschieben. Angenommen ich stehe am Anfang auf der 1, dann würde, falls r 48 ergibt die Zahl 49 gezogen. Diese müßte mit dispose oder zumindest umhängen der Zeiger, (wofür man noch ein paar Hilfsvariable bräuchte) aus dem Ring rausgenommen werden. Dieser hätte dann noch 48 Elemente. usw.

Die Datenstruktur wäre ziemlich simpel:

Delphi-Quellcode:
type RingTyp = ^RingZeigerTyp;

      RingZeigerTyp = RECORD
                         wert : byte;
                         naechst : RingTyp;
                       END;
var RingVar,
    Vorgaenger : RingTyp;
    GezogeneKugel : byte;
Bei einer gezogenen Kugel müßte man nur folgendes machen:

Delphi-Quellcode:
GezogeneKugel := RingVar^.wert;
Vorgaenger^.naechst := RingVar.naechst^; // gezogene Kugel aus Ring nehmen
Vorgaenger := RingVar;
RingVar := RingVar^.naechst;
Vorgaenger als Hilfsvariable müßte halt immer mitgeschleppt werden. Hmmm, kann das da so stimmen ?
Gruß
Hansa
  Mit Zitat antworten Zitat