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