Thema: Delphi String "mischen"

Einzelnen Beitrag anzeigen

daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: String "mischen"

  Alt 18. Sep 2003, 14:18
So, ich hab mal diesen Code geschrieben und auch getestet:

Delphi-Quellcode:
function TForm1.MixString(mixstr : string):string;
var i, x1, x2 : longword;
    rem1, rem2 : Char;
begin
  Case length(mixstr)>0 of
  true : begin
         Screen.Cursor := crHourGlass;
         randomize;
         x2 := Random(length(mixstr))+1;
         for i := 1 to 1000*length(mixstr)
         do begin
              x1 := Random(length(mixstr))+1;
              rem1 := Char(mixstr[x1]);
              rem2 := Char(mixstr[x2]);
              mixstr[x1] := rem2;
              mixstr[x2] := rem1;
              x2 := x1;
            end;
         result := mixstr;
         Screen.Cursor := crDefault;
         end;
  false : result := '';
  end;
end;
Die Problematik bei einem solchen Code ist immer, dass zwei Zufallszahlen zugleich generiert werden müssen. Da die dann aber fast immer gleich ausfallen, muss man den Rechner zwischendurch etwas beschäftigen. Ich hab das jetzt so gemacht, dass der Rechner immer eine Zahl der vorherigen "Ziehung" speichert. Auf diese Weise wird das Mischen überhaupt erst möglich!
Trotzdem kann ich dir nicht garantieren, dass es nicht auch bei diesem Code vorkommt, dass gleiche Zufallszahlen generiert werden, weil der Code, der zwischenzeitlich ausgeführt wird, dennoch sehr gering ist.

Soll es noch zufälliger werden, dann musst du dich mal nach dem Thema "Pseudozufallszahlen" erkundigen. Das führt dann aber zwangsläufig zu komplizierten Algorithmen und langen Generationszeiten. Zudem muss der Nutzer meistens die Maus bewegen.

MfG.
  Mit Zitat antworten Zitat