PHP lernen – Zufallszahlen

Hi,

Zufallszahlen kann man für verschiedene Dinge gebrauchen – zum Generieren von Passwörtern oder für ein Zahlenraten-Spiel. Außerdem gibt es sie in fast allen Programmiersprachen. Schauen wir uns an wie das in PHP funktioniert.

Wie generiert man Zufallszahlen?

Dafür gibt es eine Funktion rand, an die können wir einen Minimum- und Maximumwert übergeben, innerhalb derer die Zufallszahl generiert wird. Wenn wir eine Zahl zwischen 50 und 100 haben wollen, übergeben wir somit 50 und 100. Wenn wir die Funktion rand() ganz ohne Argumente aufrufen, erhalten wir einen Wert zwischen 0 und getrandmax (das liefert dir die maximale Zahl die PHP vorgibt um Zufallszahlen zu erzeugen).

Aber schau selbst:

Die Zahlen werden jeweils einschließlich des angegebenen Bereichs generiert, das heißt die Zufallszahl kann 50, 100 oder irgendwas dazwischen sein.

Machen wir etwas sinnvolles damit:

Simpler Passwortgenerator

Wir programmieren einen kleinen Passwortgenerator, der uns ein Passwort mit 8 Zeichen Länge ausspuckt. Der Code:

Zur Erklärung:

  • Wir legen erstmal fest, welche Zeichen das Passwort später überhaupt enthalten kann sowie die Länge des Passworts und eine Variable in die wir das Passwort dann speichern.
  • In einer for-Schleife zählen wir von 0 an immer eins hoch solange der Zähler kleiner als $Laenge ist.
  • Ein zufälliges Zeichen holen wir mit uns mit der schon bekannten Funktion substr.  Das heißt wir übergeben wieder den String aus dem wir ein Zeichen extrahieren wollen, springen dort an einen zufälligen Index (mit rand eine Zahl von 0 bis Anzahl-Zeichen-des-Strings-minus-eins) und extrahieren von dort an 1 Zeichen.

Spiele einfach mal mit den Werten herum und schau, was dabei raus kommt 🙂

Zufälligen Wert aus einem Array holen

Erstellen wir ein Array und geben danach einen zufälligen Eintrag aus.

Sehr einfaches Beispiel, aber es funktioniert. Bei jedem Neuladen der Seite (drück‘ [F5]) wird etwas anderes ausgegeben. Mit count ermitteln wir die Anzahl von Werten die das Array enthält und ziehen dann 1 ab.

Vielleicht fragst du dich, wieso wir mit count die Array-Größe ermitteln und dann wieder 1 abziehen (so wie im Code-Beispiel zuvor bei strlen). Nun, wir haben hier ein Array mit 7 Einträgen, das heißt es gibt $Zahlen[0] bis $Zahlen[6]. Die Funktion count gibt uns logischerweise 7 zurück. Wenn wir demnach rand(0, 7) schreiben kann die Zufallszahl eine Zahl von einschließlich 0 bis einschließlich 7 sein. $Zahlen[7] gibt’s aber nicht. Deswegen ziehen wir 1 ab.

Sind die generierten Zahlen wirklich zufällig?

Nicht so ganz, daher spricht man bei den von rand() erzeugten Werten auch von Pseudo-Zufallszahlen. Es gibt aber noch die Funktion mt_rand, die „bessere“ Zufallszahlen erzeugt, und das auch noch wesentlich schneller.

» Ich empfehle dir für den weiteren Verlauf immer nur mt_rand zu verwenden. Die oben gezeigten Beispiele funktionieren ganz genauso.

Zufallszahl mit Nachkommastellen

Auch das geht, indem du eine Zufallszahl generierst und sie durch den Zufallszahl-Maximalwert teilst:

Die Ausgabe kann so aussehen:

Fazit

Woah, wir sind schon am Ende – ging schnell heute, aber mehr ist zu Zufallszahlen einfach nicht zu sagen. Trotzdem wirst du sie öfter benötigen als du vielleicht jetzt glaubst.

 

Bis zum nächsten Artikel
Marius

Ein Kommentar

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.