![]() |
Delphi-Version: 5
Stringlist nur leicht mischen?
Hallo zusammen,
ich würde gerne eine Stringlist zufällig durchmischen. Soweit kein Problem, gibt es bereits:
Code:
Quelle:
procedure Shuffle(List: TStrings);
var i: Integer; begin Randomize; List.BeginUpdate; try for i := 0 to Pred(List.Count) do List.Exchange(i, Random(List.Count)); finally List.EndUpdate; end; end; ![]() Mein Problem ist allerdings das ich die Liste nicht von vorne bis hinten auf den Kopf stellen möchte sondern nur leicht verändern will. Konkret geht es um eine Liste mit 1000 Einträgen. Wie die Begrenzung genau aussehen soll lasse ich bewusst offen da ich nicht weiß welche sich am einfachsten umsetzen lässt. Mir würde z.B. einfallen das die Einträge sich um maximal 5 Plätze verschieben lassen oder in ihrer 10 Einheit bleiben (z.B. 88 darf nur von 81-90 verschoben werden). Kann mir jemand weiterhelfen wie ich das realisieren kann? Random lässt sich ja nicht derart einschränken. PS: Die Geschwindigkeit spielt keine Rolle. Vielen Dank, LG Christian |
AW: Stringlist nur leicht mischen?
Minimiere doch einfach die Anzahl wie oft getauscht wird.
|
AW: Stringlist nur leicht mischen?
Zitat:
|
AW: Stringlist nur leicht mischen?
Vielen Dank für eure Antworten.
Zitat:
Zitat:
Vielen Dank für die Hilfe :thumb: LG Christian |
AW: Stringlist nur leicht mischen?
Zitat:
Ein Beispiel: Du willst einen Wert zwischen 110 und 120. Heißt, 110 plus einen Wert zwischen 0 und 10. Also:
Delphi-Quellcode:
:idea:
110 + Random(10)
(RandomRange ist natürlich vollkommen ok, ich wollte nur mal auf die Berechnung hinweisen. ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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