Thema: Delphi Ordung muss sein

Einzelnen Beitrag anzeigen

Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#45

Re: Ordung muss sein

  Alt 5. Okt 2003, 16:49
Hallo zusammen,

nachdem ich jetzt die ganze Diskussion verfolgt habe, möchte ich dazu auch was loswerden.
Bei solchen Aufgabenstellungen sind doch wohl die Algorithmen die besten, die die "Wirklichkeit" am besten abbilden (und damit häufig am besten verstanden werden. Deshalb würde ich beim Lottoproblem eine Synthese aus den Ansätzem von Hansa und den Überlegungen von Hagen wählen:

Was passiert den da tatsächlich?

Am Anfang haben wir eine (geordnete!!!) Menge von 49 Kugeln auf dem Plastikgitter. Okay, wir erzeugen eine Liste A mit 49 Elementen. Der Einfachheit halber mit Zahlen als Bezeichnern. Da könnten nämlich auch Äpfel, Birnen oder sonstwas aufgemalt sein. Es geht hier um 49 verschiednene Symbole, und das die zählbar sind ist Zufall! (...und führt zu dem Kardinalfehler die Ordnungsnummer mit dem Wert zu verwechseln....)

Dann fallen die Kugeln in die Trommel und werden gemischt. Das können wir auch: wir erzeugen z.B. 1000 Zahlenpaare aus Zufallszahlen (1..n, n = 49) und vertauschen jeweils die Elemente der Liste A mit diesem Index.

Dann entnehmen wir die erste "Kugel" (Zufallszahl, Trunc(Random*n)+1 ), löschen das Element aus der Liste und vermindern die obere Grenze (n = n - 1).
In Liste B wird das soeben gezogene Element eingefügt. Das wird 6 mal wiederholt. Damit sind sowohl die (richtigen) Überlegungen von Hagen befriedigt, als auch die Anschaulichkeit gewahrt.

Ich würde für kleine Mengen sogar wirklich Listen (einfach verkettet) benutzen. Das letzte Element erhält als Nachfolger das erste. Dieser "Ring" kann wunderbar mit Hilfe der Indizes abgeklappert werden. Gefundene Elemente werden wirklich aus der Liste entfernt, durch die Ringstruktur gibt es keinen Überlauf. Um die Schwächen der Random-Funktion etwas abzumildern kann zu jedem Zufallswert nochmal n addiert werden. Dann "läuft" der Index einfach ein Runde länger. Die Zufallszahl sollte nur auf alle Fälle > n sein.

Beim echten Lotto wird die Liste B anschließend noch geordnet.

Und jetzt die Schwächen dieser Lösung: Wenn es sich um große Mengen handelt, dauern speziell das Mischen und die Einfüge- und Ausfüge-Operationen lange. Aber die "Lottoshow" dauert ja auch einige Minuten. Und für max 49 Elemente reicht das.
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat