Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.191 Beiträge
 
Delphi 12 Athens
 
#6

AW: Stringlist in zufällige Reihenfolge bringen

  Alt 7. Sep 2023, 15:39
* du könntest die Liste in 30 Teile Gruppen aufteilen, oder eine gemeinsame vielfache Anzahl der Doppelten/Mehrfachen

* dann alle Mehrfachen auf die Gruppen aufteilen
* * gleichmäßig oder per Zufall (maximal/möglichst nur je Einer pro Gruppe)

* zum Schluss die Gruppen mit den nichtmehrfachen halbwegs gleichmäßig auffüllen
* * jeweils kleinste Gruppe suchen und per Zufall einen der Einzelnen da rein
* * bis alle verteilt sind

* nun die Inhalte der Gruppen sortieren
* die Gruppen untereinander umsortieren, besser nicht, weil dann die vorherrige Aufteilung sich wieder zufällig zusammenfinden könnte
* eventuell schauen ob in benachbarten Gruppen was zu nah zusammen und diese Beiden oder eine der Beiden neu sortieren
* * wiederholen bis OK, oder zuviele Versuche und aufgeben

* und nun die Gruppen






Oder beim Umsortieren (der gesamten Liste) jeweils schauen, ob am Ziel in der Nähe zuviele Gleiche liegen und dann dieses Austauschen der Beiden nicht machen.
Delphi-Quellcode:
for j := 0 to 10 do // mehrmals durch
  for i := SL.Count-1 downto 1 do begin
    x := random(i+1);
    if PrüfeAnzahlDerGleichenImBereich(SL, S[i], x-20, x+20) < MaximalSovieleNahZusammen then
      SL.Exchange(i, x);
  end;
Delphi-Quellcode:
for j := 0 to 1000 do begin
  i := random(i+1);
  x := random(i+1);
  if PrüfeAnzahlDerGleichenImBereich(SL, S[i], x-20, x+20) < MaximalSovieleNahZusammen then
    SL.Exchange(i, x);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Sep 2023 um 15:46 Uhr)
  Mit Zitat antworten Zitat