Listbox.Items zufällig mischen

Für Fragen von Einsteigern und Programmieranfängern...
mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Listbox.Items zufällig mischen

Beitrag von mse »

theo hat geschrieben:Schaffst du das?

Wenn wir es nicht schaffen, schafft es Murphy bestimmt. :-)

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Listbox.Items zufällig mischen

Beitrag von theo »

mse hat geschrieben:Wenn wir es nicht schaffen, schafft es Murphy bestimmt. :-)


Den hab ich schon gerufen, der kommt aber nicht aus der Höhle... ;-)

program MurphyKommRaus;

Code: Alles auswählen

function RandomSort(List: TStringList; Index1, Index2: Integer): Integer;
begin
 Result := -1 + Random(3);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var sl:TStringList;
i:integer;
cnt:QWord;
s:String;
begin
 i:=0;
 cnt:=0;
 Randomize;
 sl:=TStringList.create;
// for i:=65 to 90 do s:=s+chr(i)+LineEnding;
 for i:=65 to 68 do s:=s+chr(i)+LineEnding;
 sl.text:=s;
 
 while not (Application.Terminated) do
 begin
 sl.CustomSort(@RandomSort);
 if (cnt=High(Qword)) then break;
 inc(cnt);
 if cnt mod 100000 = 0 then
  begin
    Caption:=inttostr(cnt);
    ListBox1.Items.Assign(sl);
    Application.Processmessages;
  end;
 end;
 sl.free;
end;

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Listbox.Items zufällig mischen

Beitrag von af0815 »

Wenn du eine 'schlechte' Vergleichsfunktion hast, dann ist die ja deterministisch schlecht und somit wird die Abbruchbedingung für den QS nicht schlagend - klassicher hänger :-) (kenn ich zur genüge - bin Spezialist dafür)

Das schöne bei Theos Version, ist, das durch den Zufallsgenerator auch diese Abbruchsbedinung früher oder später erfüllt wird, darum gibt es IMHO kein Problem mit hängern.


Übrigends kann man auch 'Murphys Gesetz' auf 'Murphys Gesetze' anwenden :-)


BTW: Die Idee mit dem 'unsort' ist schon fast Patentverdächtig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten