![]() |
Zufallsgenerator
Ich brauche nen zufallsgenerator, der den Inhalt von edit1 zu edit2 durcheinander wirft!
Kann mir einer helfen? :gruebel: :coder: |
Re: Zufallsgenerator
Was meinst du? Permutationen? Also zum Beispiel so:
edit1.text: wuppdi edit2.text puwipd Das ginge so:
Delphi-Quellcode:
EDIT: Mit einer kleinen Änderung ist sogar ein 1 MB String fix verarbeitet.
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; |
Re: Zufallsgenerator
entschuldige die dumme frage aber wie kann ich die function entsprechend aufrufen? :wiejetzt:
|
Re: Zufallsgenerator
Delphi-Quellcode:
so ;)
Edit2.Text := MakeAnagram(Edit1.Text);
Gruß Neutral General |
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: |
Re: Zufallsgenerator
Hallo Joel,
schau Dir mal diesen Thread dazu an, dort findest Du auch die Lösung zu Deinem Problem: -> ![]() Grüße Klaus |
Re: Zufallsgenerator
Da würd ich doch ne Lottoziehung bauen...
Delphi-Quellcode:
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.
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; |
Re: Zufallsgenerator
Liste der Anhänge anzeigen (Anzahl: 1)
Hab nen passenden Code gefunden :cheers: :
Delphi-Quellcode:
Hier ist das vertige Beispielprog:
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; |
Re: Zufallsgenerator
Auch das randomize; nicht vergessen gehabt?
|
Re: Zufallsgenerator
???
Delphi-Quellcode:
??? :coder:
randomize;
|
Re: Zufallsgenerator
Du musst den Zufallszahlengenerator schon auch initialisieren...
|
Re: Zufallsgenerator
:wiejetzt: ?
|
Re: Zufallsgenerator
Der Zufallsgenerator ist nicht wirklich einer, sondern versucht möglichst zufällig eine Zahl auszugeben, das kann auf mehrere Arten gehen. Aber dazu muss z.B. in MainForm (meist Form1 ;-)).FormCreate der Befehl "randomize" geschrieben werden, der das ganze initialisiert. Sonst bekommst du immer die gleichen Werte ;-)
|
Re: Zufallsgenerator
Ich fersteh zwar nicht warum ich die gleichen Werte haben soll (hab ich mähmlich nich!!!)? :warn:
|
Re: Zufallsgenerator
Jedes mal beim Programmstart die gleichen.
|
Re: Zufallsgenerator
Hab ich auch nich???!!!??? :wall:
|
Re: Zufallsgenerator
Sorry, aber kommen hier keine Antworten???
|
Re: Zufallsgenerator
Ähm...
![]() ![]() ![]() ![]() Random gibt dann "RandomEngine.Next" (weiter komme ich nicht in die Untiefen des VCL-Codes) zurück. Also "die nächste zufallszahl". Für jeden Wert von Randseed hast du eine eindeutige kette von aufeinanderfolgenden Zufallswerten, diese werden über sehr komplizierte Algorithmen ausgerechnet, so dass es "wie Zufall aussieht". negaH kann sich da differenzierter darüber auslassen (und er würde an der Delphi-Implenmentation kein gutes Haar lassen). Somit sollte Randseed VOR dem aufruf von Randomize auf einem bestimmten Wert stehen, und du solltest somit immer die selben zufallszahlen erhalten. |
Re: Zufallsgenerator
Zitat:
Vielleciht steht da auch was wirklich zufälliges drin... |
Re: Zufallsgenerator
Moin Lukas,
RandSeed steht vor dem Aufruf von Randomize auf 0 (zumindest in D7 und 2006). |
Re: Zufallsgenerator
Genau, das hatte ich vermutet.
|
Re: Zufallsgenerator
Liste der Anhänge anzeigen (Anzahl: 1)
Is ja eigentlich egal, denn der Zufallsgenerstor funzt jetzt endlich. :coder:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz