Registriert seit: 16. Jul 2003
170 Beiträge
Delphi 6 Enterprise
|
Re: String "mischen"
18. Sep 2003, 16:11
Noch etwas zu Thema:
Der Code von anku verursachte bei mir eine Zugriffsverletzung und der Code von neolithos "vergisst" einfach Zeichen, sodass der String hinterher ein paar Zeichen kürzer sein kann oder gleich '' ist.
Bei meinem Code habe ich mal die Zufälligkeit getestet.
Dafür habe ich mir ein kleines Prog gebaut, in das ich meinen Originalstring eingegeben habe. Das Prog hat diesen nun vermischt und das Ergebnis schließlich mit dem Original verglichen. Das ganze wurde so lange wiederholt, bis der String mit dem Original übereinstimmte.
Hier die Ergebnisse:
String mit 3 Zeichen:
Berechneter Sollwert (maximale Möglichkeiten = 3 Fakultät): 6 Versuche
Getesteter Durchnitt: 184 Versuche (Durchschnitt aus 10 Durchläufen)
String mit 5 Zeichen:
Sollwert: 120 Versuche
Durchschnitt: 1688,1 Versuche
Fazit: Das Mischen mit dem Code geht sehr schnell und eigentlich auch ganz gut.
Dennoch wiederholt sich ein String nur alle 10 bis 20 mal seltener, als es normalerweise der Fall sein müsste! Hierfür kann es zwei Gründe geben:
1) Der Code scheut sich aus irgendeinem Grund davor, den String wieder in die Ursprungsform zu bringen. Diese Theorie wäre belegt, wenn man den Versuch so gestalten würde, dass als Ergebnis nicht wieder der Ausgangsstring entstehen soll, sondern ein schon gemischter String und dann die Zufallswerte eine bessere Form annehmen würden.
2) Ein und derselbe Zufallswert kehrt 10-20 mal wieder. Dies halteich auf jeden Fall für wahrscheinlicher. Zur genaueren Untersuchung müsste man einfach mal die Zufallswerte loggen.
@ Robert Marquardt:
Du siehst also: Wirklich effizient ist das auch nicht. Für den 0815-User aber auf jeden Fall ausreichend.
MfG.
PS: Sorry für die lange Erklärung, hab aber nun mal Physik- und Mathe-LK.
|