Die Wichtigkeit von RNG beim Coding

Generatoren von Zufallszahlen und Pseudozufallszahlen – fast jeder, der sich schon mal mit Coding, egal in welcher Sprache, befasst hat, ist einmal über die Begriffe gestolpert. Dabei sind die Random Number Generators (RNGs), wie die Zufallsgeneratoren in der englischen Sprache bekannt sind, für bestimmte Anwendungen in Computer-Programmen unerlässlich. Doch bevor wir zum Wesentlichen übergehen, klären wir einmal, worin der Unterschied zwischen RNGs und Pseudozufallsgeneratoren (PRNGs) liegt.

Sind Zufallszahlen wirklich zufällig?

Die Antwort auf diese Frage erklärt auch, worin sich beide Arten der Zufallsgeneratoren unterscheiden.

Bei einem echten Zufallsgenerator wird eine absolut zufällige Folge von Zahlen oder Symbolen generiert, die man nicht vorhersagen kann. Hier bestimmt nur der Zufall das entsprechende Muster, wobei diese Art der Zufallsgeneratoren besonders nützlich ist, um bestimmte Prozesse in einem Computer-Programm zu simulieren. Somit erzielt man absolut wahrheitsgetreue Ergebnisse, denn es existiert kein Modell, das die Grundlage für den entsprechenden Stimulus bildet. Man kann deshalb in der Software genau das Verhalten nachahmen, das der realen physikalischen Umgebung entspricht.

Bei Pseudozufallsgeneratoren hingegen erzeugt ein Feedback-Register sehr lange Sequenzen, die in der Tat nur während einer kurzen Zeit zufällig aussehen. Sie sind allerdings durch Seeds und genaue Stellen, wo die Rückkopplung passiert, vorbestimmt. So wiederholt sich die anscheinend zufällige Folge immer wieder, nur braucht das eine viel längere Zeit.

Beim Coding verwendet man beide Arten der Zufallsgeneratoren, denn manchmal ist absolute Zufälligkeit erwünscht und bei manchen Algorithmen will man etwas mehr Kontrolle über die Ergebnisse.

Pseudo-RNGs kommen in der Kryptografie und bei Monte-Carlo Simulationen zum Einsatz

Kryptografische Anwendungen profitieren von den besonderen Merkmalen eines Pseudozufallsgenerators. Hier besteht das Ziel darin, die Daten des Nutzers anhand einer „zufälligen“ Reihenfolge zum Abhören völlig unbrauchbar zu machen. Ein Pseudo-RNG leistet hier hervorragende Arbeit, indem man die Daten mit der langen Zahlenfolge multipliziert. Nachfolgend sind diese vom elektrischen Datenrauschen kaum zu unterscheiden. Allerdings muss der Empfänger in der Lage sein, den Vorgang rückgängig zu machen. Wenn er also den Seed kennt, kann er genau dieselbe Zahlenfolge generieren und somit die Daten entziffern. Es ist genau dieser Seed des Feedback-Registers eines Pseudozufallsgenerators, der im geheimen Schlüssel eines kryptografischen Algorithmus enthalten ist.

Ein weiterer Fall für Pseudo-RNGs sind Debugging-Simulationen beim Coding. Hier kommt oft ein Monte-Carlo-Verfahren zum Einsatz, wobei die absolute Zufälligkeit unerwünscht ist. Man will einfach in der Lage sein, dieselbe Zahlenfolge nochmals zu generieren, die zu einem bestimmten Ausgang geführt hat, um somit einem potenziellen Problem auf die Spur zu kommen.

Statistik und Glücksspiele – zwei Anwendungsgebiete für echte Zufallsgeneratoren

Um statistisch das Verhalten von Computer-Software über einen längeren Zeitraum zu bestimmen oder die Interaktion mit Nutzern verlässlich zu simulieren, braucht man echte Zufallszahlenfolgen.

Das Gleiche gilt auch, wenn es darum geht, die Rolle des Glücks bei Casino Slots zu übernehmen. Hier entscheidet die Zufälligkeit der von der Casino-Software generierten Zahlen darüber, ob das Spiel als fair bezeichnet werden kann und demzufolge überhaupt zugelassen wird. Hierfür bedient man sich einem kleinen Trick. Die Zahlenfolgen, die das Erscheinen bestimmter Symbole auf den Walzen bestimmen, werden tatsächlich von einem Pseudo-RNG generiert. Dieser läuft in Form eines Software-Feedback-Registers kontinuierlich. Die generierte Zahl wird dabei vom genauen Zeitpunkt bestimmt, wann der Spieler die Spin-Taste drückt. Und dieser ist in der Tat absolut zufällig und vorher nicht zu bestimmen. So erzielt man bei dieser typischen RNG-Anwendung beim Programmieren von Glücksspielen die notwendige Zufälligkeit.

Autor:
Zurück zur Übersicht aller Beiträge