Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: FOR-Schleifen Problem

  Alt 30. Mär 2011, 14:07
Ist natürlich nicht wirklich performant.
So eine Zufallszahlen-Liste ist schneller mit einer zufälligen Sortierung erreicht.

Aber hier mal dein Ansatz komplettiert:
Delphi-Quellcode:
var
  rZahl : array [0 .. 15] of Integer;
  temp, i : Integer;
  Unique : Boolean;
  j : Integer;
begin
  // Erste Zufalls-Zahl setzen (die ist per Definition auch einzigartig im Array)
  rZahl[ low( rZahl )] := Random( 16 );

  // Wir Starten mit dem 2. Array-Eintrag
  i := low( rZahl ) + 1;

  while i <= high( rZahl ) do
    begin

      repeat

        // Unique-Flag
        Unique := True;
        // Neue Zufallszahl ermitteln
        temp := Random( 16 );
        // mit allen bisherigen Zufallszahlen vergleichen
        for j := low( rZahl ) to i - 1 do
          // Wenn es die schon gibt, dann ...
          if rZahl[j] = temp
          then
            begin
              // ... ist die also nicht mehr einzigartig
              Unique := False;
              // und wir können diese For-Schleife auch schon verlassen
              Break;
            end;

        // solange wiederholen, bis wir eine einzigartige Zufallszahl erhalten haben
      until Unique;

      // Zufalls-Zahl dem Array zuweisen
      rZahl[i] := temp;

      // Ausgabe der Zahl
      txtRandoms.Text := txtRandoms.Text + IntToStr(rZahl[i]) + '; ';

      // und zum nächsten Array-Eintrag hüpfen :-)
      inc( i );
    end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat