![]() |
AW: Shuffle algo
Ich denke das ist die Lösung für mich weil das sortieren der Liste zusätzlich zu lange dauert bei jeden Titel aufs neue.
Danke..
Delphi-Quellcode:
Heino ist gone.. :lol:
function TBassPlayer.ListShuffle(LView: ISkinListView): Integer;
type TArrayElement = Integer; TArray = array of TArrayElement; var FisherYates: TArray; ListCount: Integer; procedure FillArray(var aArray: TArray; const cStart: Integer = 0); var i: Integer; begin for i := Low(aArray) to High(aArray) do aArray[i] := i + cStart; end; function ShuffleFisherYates(var aArray: TArray): Integer; var i,j: Integer; tmp: TArrayElement; begin // alle Elemente des Feldes durchlaufen for i := Low(aArray) to High(aArray) do begin // neue, zufällig Position bestimmen j := i +Random(Length(aArray) -i +Low(aArray)); // Element Nr. i mit Nr. j vertauschen (3ecks-Tausch) tmp := aArray[j]; aArray[j] := aArray[i]; aArray[i] := tmp; end; Result := aArray[0]; end; begin ListCount := LView.Count(LView.Handle); SetLength(FisherYates, ListCount); FillArray(FisherYates); Result := ShuffleFisherYates(FisherYates); end; gruss |
AW: Shuffle algo
Du hast aber bei
Delphi-Quellcode:
vorher ein
Random()
Delphi-Quellcode:
durchgeführt?
randomize
Und dann gibt es ja noch die Möglichkeit sich die letzten 5,10... Indices zu merken und bei Wiederholung einen neuen anzufordern. Gruß K-H |
AW: Shuffle algo
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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