Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Shuffle eines Strings

  Alt 29. Mär 2008, 01:26
Du brauchtst einen eigenen Zufallsgenerator. Er nuss nicht besonders gut sein. Es reicht ein Generator nach der linearen Konkruenzmethode.
Delphi-Quellcode:
var
  g_seed:integer;

function fastrand:integer; // "geklaut" von [url]http://softwarecommunity.intel.com/articles/eng/2978.htm[/url]
begin
   g_seed := 214013*g_seed+2531011;
   result := (g_seed shr 16) and $7FFF;
end;
Warum nicht Random() benützen ? Weil Borland den random() Generator ändern könnte.
Ausserdem wäre das nicht portabel. Keine Ahnung, ob FreePascal die gleiche random() Funkt
benützt als Borland.

Und dann einfach 36 Mal die Zeichen vertauschen:
Delphi-Quellcode:
  g_Seed := deinIntParameter;
  for i:=1 to 36 do
  begin
    // swapChar vertauscht zwei Chars - deine Hausaufgabe
    SwapChar(s[i], s[fastrand mod 36 +]);
  end;
  Mit Zitat antworten Zitat