Entwickler-Ecke

Sonstiges (Delphi) - String "mischen"


FriFra - Mi 17.09.03 23:38
Titel: String "mischen"
Ich suche eine möglichst einfache Möglichkeit einen beliebig langen String mit einem Zufallsgenerator komplett "durcheinander zu Würfeln"

z.B.: dasisteintest -> stiestndeista

Aber ich will nicht immer z.B. Zeichen 2 an Position 8 oder Zeichen 4 an Position 1, sondern eine wirklich zufällige Anordnung!


hansa - Do 18.09.03 05:34

Das ist doch einfach nur "Suchen und Ersetzen", da Du aber sowieso den ersten Buchstaben behalten wolltest, ist das schon mit drin:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function StringWuerfeln (s : string) : string;
var ch,
      ch2 : char;
      i,
      j   : integer;
  begin
    randomize;
     for i := 1 to length (s) do begin
       j := random (length (s)+1);   // zufällige Stelle im Wort, auf max. Länge achten
       if (i > 1and (j > 1then begin    // 1. Stelle lassen wie sie ist
         ch := s [j];                       // Buchstabe an der Stelle j (zufällig)
         ch2 := s [i];                      // alten Buchstaben sichern
         s [i] := ch;                       // alten durch zufälligen ersetzen
         s [j] := ch2;                     // neuen durch alten ersetzen
      end;
    end;
    StringWuerfeln := s;
  end;


Aber da taucht eine Frage auf: mit random begrenze ich ja die Zufallszahl nach oben, aber geht das auch nach unten ?


datensender - Do 18.09.03 08:37

hansa hat folgendes geschrieben:
Aber da taucht eine Frage auf: mit random begrenze ich ja die Zufallszahl nach oben, aber geht das auch nach unten ?


najo, du brauchst nur die untere Grenze aufaddieren...

Quelltext
1:
J := 5000 + Random(1001);                    

wäre hier 5000 bis 6000