Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zufallsgenerator (https://www.delphipraxis.net/73765-zufallsgenerator.html)

joel93 23. Jul 2006 19:13


Zufallsgenerator
 
Ich brauche nen zufallsgenerator, der den Inhalt von edit1 zu edit2 durcheinander wirft!
Kann mir einer helfen? :gruebel: :coder:

3_of_8 23. Jul 2006 19:31

Re: Zufallsgenerator
 
Was meinst du? Permutationen? Also zum Beispiel so:

edit1.text: wuppdi
edit2.text puwipd

Das ginge so:
Delphi-Quellcode:
function MakeAnagram(str: string): string;
var I, n, r: Integer;
    c: Char;
begin
  result:=str;
  n:=length(result);
  for I:=1 to n do
  begin
    r:=i+random(n-I);
    c:=result[I];
    result[I]:=result[r];
    result[r]:=c;
  end;
end;
EDIT: Mit einer kleinen Änderung ist sogar ein 1 MB String fix verarbeitet.

joel93 24. Jul 2006 13:07

Re: Zufallsgenerator
 
entschuldige die dumme frage aber wie kann ich die function entsprechend aufrufen? :wiejetzt:

Neutral General 24. Jul 2006 13:28

Re: Zufallsgenerator
 
Delphi-Quellcode:
Edit2.Text := MakeAnagram(Edit1.Text);
so ;)

Gruß
Neutral General

joel93 24. Jul 2006 14:15

Re: Zufallsgenerator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke an beide!
Nur ein problem gibt es noch!


Wenn ich etwas eintippe
zb. 18d4 kommt im Ergebnis am ende immer dei 4
zb. d4df kommt im Ergebnis am ende immer das f
zb. 38fsdfh? kommt im Ergebnis am ende immer das ?
egal was ich tue und drücke!

...Und so weiter...
:coder2:

Klaus01 24. Jul 2006 14:20

Re: Zufallsgenerator
 
Hallo Joel,

schau Dir mal diesen Thread dazu an, dort findest Du auch die Lösung
zu Deinem Problem: -> http://www.delphipraxis.net/internal...ct.php?t=88372

Grüße
Klaus

DGL-luke 24. Jul 2006 14:22

Re: Zufallsgenerator
 
Da würd ich doch ne Lottoziehung bauen...

Delphi-Quellcode:
function StringShuffle(s: string): string;
var i: Integer;
begin
Result := '';
while length(s) > 0 do
  begin
    i := Random(length(s)-1) +1; //laut Dok bis < Range, deswegen das -1
    Result := Result + s[i];
    Delete(s,i,1);
  end;
end;
Ich nehme also einen zufälligen Wert aus dem alten string raus, tu ihn an den neuen dran und lösch ihn im alten. und das so lange, bis der alte leer ist.

joel93 24. Jul 2006 17:59

Re: Zufallsgenerator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab nen passenden Code gefunden :cheers: :

Delphi-Quellcode:
function Anagram(const s: String): String;
var
  i, iRandom, iLast: Integer;
  c: Char;
begin
  Result := s;
  iLast := Length(s);
  for i := 1 to Pred(iLast) do
  begin
    iRandom := Succ(Random(i));
    c := Result[iLast];
    Result[iLast] := Result[iRandom];
    Result[iRandom] := c;
  end;
end;
Hier ist das vertige Beispielprog:

ManuMF 25. Jul 2006 19:29

Re: Zufallsgenerator
 
Auch das randomize; nicht vergessen gehabt?

joel93 25. Jul 2006 19:50

Re: Zufallsgenerator
 
???
Delphi-Quellcode:
randomize;
??? :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz