![]() |
Integer-Array mit unterschiedlichen zufälligen Werten füllen
Delphi-Quellcode:
Beispielaufruf:
// Weist den Elementen von AArray zufällige, unterschiedliche Werte zu.
// Der niedrigste Wert ist AStart, die weiteren Werte sind jeweils um AStep größer // Nicht vergessen, Randomize einmal im Projekt aufzurufen! procedure RandomArray(var AArray: array of Integer; const AStart, AStep: Integer); var List: TList; i, Index: Integer; begin List := TList.Create; i := AStart; repeat // erst alle Werte in die Liste packen, ... List.Add(Pointer(i)); Inc(i, AStep); until i = AStart + AStep * Length(AArray); for i := Low(AArray) to High(AArray) do // ...dann zufällig einen rauspicken begin Index := Random(List.Count); AArray[i] := Integer(List.Items[Index]); List.Delete(Index); end; List.Free; end;
Delphi-Quellcode:
Beispielausgabe:
var
a: Array[5..10] of Integer; i: Integer; begin ListBox1.Clear; RandomArray(a, 0, 2); for i := Low(a) to High(a) do ListBox1.Items.Add(Inttostr(a)); end;
Code:
Tipps und Optimierungen erwünscht :) !
4
0 8 10 6 2 alzaimar hat die Verwendung der VCL entfernt und den Algorithmus somit beschleunigt:
Delphi-Quellcode:
[edit=Chakotay1308]Zusätzlichen Code eingefügt. Mfg, Chakotay1308[/edit]
procedure RandomArray(var AArray: array of Integer; const AStart, AStep: Integer);
Var A : Array[0..Count-1] of Integer; N, I, J, T : Integer; begin N := High (aArray); // Array mit den Werten belegen For I := Low (aArray) To N do A[I] := AStart + i*AStep; // Zufallspermutation erzeugen For I := Low (aArray) To N do J := I + random(N - I); T := A[J]; A[J] := A[I]; A[I] := T; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz