hallo,
ich bin gerade dabei bogosort in einer kleinen konsolenanwendung zu implementieren.
schwierigkeiten bereitet mir dabei das durchwürfeln des integer-arrays, da meine methode zwei zufällig gewählte elemente zu vertauschen und das so oft, wie das array lang ist, keine wirklich zufälligen ergebnisse liefert.
dies zeigt sich dadurch, dass selbst bei 3 elementen und 10 ausgaben des durchgewürfelten arrays entweder nur 3 unterschiedliche kombinationen liefert, die sich kontinuierlich wiederholen, oder 10 identische ausgaben.
abhängig ist das anscheinend von der position des randomize.
bitte gebt mir einen vorschlag, wie ich meinen code "zufälliger" hinbekomme, oder auch völlig neue ideen, aber bitte keine antworten, dass bogosort unnütz und langsam ist. das weiß ich auch, aber nachdem ich die üblichen sortieralgorithmen umgesetzt hatte wollte ich auch mal was spaßiges ausprobieren.
Delphi-Quellcode:
procedure wuerfeln(var feld: tfeld; n: integer);
var helpfeld: tfeld;
i, j: integer;
zeiger1, zeiger2: integer;
begin
for i:=1 to 2 do
begin
if random(100) > 70 then randomize;
zeiger1:= random(n) + 1;
zeiger2:= random(n) + 1;
vertauschen( Feld[zeiger1], Feld[zeiger2]);
end;
end;
schonmal danke für antworten