Beschreibung: Zufallsgenerator - Zeichenkette

Erstellt am 16.12.2016 | Zuletzt geändert am 21.12.2016

Kurze Beschreibung

Dieser Zufallsgenerator erzeugt eine zufällige Zeichenkette.

Was ist Zufall?

Als Zufall bezeichnet man ein Ereignis, für das es keine kausale Erklärung gibt. Das bedeutet, dass das Ergebnis eines Zufallsgenerators nicht vorhersehbar bzw. berechenbar sein darf. Dies widerspricht jedoch den Gesetzmäßigkeiten eines jeden Computers, was im Umkehrschluss bedeutet, dass ein Computer ohne weitere Peripherie keine absolut zufälligen Zahlen erzeugen kann. Man spricht in diesem Fall von Pseudo-Zufallszahlen. Generell lässt sich darüber philosophieren, ab wann man tatsächlich von Zufall sprechen kann.

Wie werden die Zufalls-Zeichenketten generiert?

Prinzipiell werden in diesem Generator zwei verschiedene Mechanismen zur Erzeugung von Pseudo-Zufallszahlen eingesetzt.

Zufallsgenerator 1 für Binärstring

Der erste Mechanismus dient rein dazu, den Binärstring im Hintergrund zu generieren. Einerseits dient dieser zur besseren Optik und andererseits kann hierdurch vom Nutzer sichergestellt werden, dass auch tatsächlich ein neuer Zufallswert erzeugt worden ist. Für die Erzeugung des Binärstrings werden die PHP-Funktionen mt_rand() und decbin() eingesetzt. Die erste Funktion erzeugt die eigentlich Zufallszahl und die zweite dient zur Konvertierung der Dezimalzahl in eine Binärzahl. Prinzipiell wird folgender Algorithmus angewendet:

1
2
$random_string = "";
while(strlen($random_string) < GEWÜNSCHTE_LÄNGE) $random_string .= decbin(mt_rand(ZAHL1, ZAHL2));

Zufallsgenerator 2 für Zeichenkette

Der vorherige Zufallsgenerator erzeugt einigermaßen gute Zufallszahlen, welche jedoch noch verbesserungsfähig sind. Zur Erzeugung der Zeichenkette wird deshalb die Funktion random_int() verwendet, die kryptographisch sichere Pseudo-Zufallszahlen generiert:

1
2
3
4
5
6
7
8
9
10
11
// Die Variable $alle_zeichen enthält alle ausgewählten Zeichen
$max_index 	= count($alle_zeichen)-1;
$zufallsantwort = "";

// Zeichenkette erzeugen
for($i = 1; $i <= LAENGE_ZEICHENKETTE; $i++) {
	
	$index = random_int(0, $max_index);
	$zufallsantwort .= $alle_zeichen[$index];
	
}
Teile diesen Beitrag