Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Datensätze zufällig anzeigen, aber alle nur einmal

  Alt 10. Apr 2005, 12:32
Da man X aus X Records zufällig sortiert haben möchte ist mein Code eine relativ ineffiziente Lösung. Es geht besser.

Delphi-Quellcode:

procedure ListeRecords:
var
  Seed,I: Integer;
begin
  Seed := RandSeed; // Zufallsstartwert speichern
  for J := 0 to RecordCount -1 do
  begin
    RandSeed = Seed;
    for I := 0 to RecordCount -1 do
      if Random(RecordCount) = J then
        PrintRecord(I);
  end;
end;
Probiere obigen Code einfach aus und analysiere ihn, ich glaube das ist einfacher als ihn jetzt hier umständlich erklären zu müssen. Die Schleifen laufen zwar mit RecordCount^2 Komplexität, allerdings werden nur RecordCount Datensatzzugriffe ausgeführt. Da die Laufzeitgeschwindigkeit der Random() Funktion vernachlässigenbar ist, stellt das kein Peformanceproblem dar. Vorteil ist das man ohne Speichertabellen, Sortierungen etc. auskommt.

Gruß Hagen
  Mit Zitat antworten Zitat