Ein Zufall lässt sich am besten definieren als ein nicht vorherzusagendes Ereignis. Diese Eigenschaft kommt in vielen Bereichen zur Anwendung, sei es im Glücksspiel oder bei der Auswahl von Teilnehmer*innen an Meinungsumfragen. In diesen Fällen sind Zufallszahlen die Basis für Fairness und Sicherheit. Auch für Verschlüsselungen sind Zufallszahlen unentbehrlich. Computer und Taschenrechner kennen jedoch keinen Zufall.
Ein Beitrag von Dr. Frauke Hoss
Bei Anwendungen zur Verschlüsselung kann man sich eine Zufallszahl vorstellen wie den Code zu einem Zahlenschloss, den niemand erraten darf, auch nicht mit gigantischer Rechenleistung. In Simulationen für Wettervorhersagen ersetzen Zufallszahlen langwierige Berechnungen von komplexen und manchmal noch nicht ganz erforschten, natürlichen Prozessen.
Zufall vs. Programmcode
Computer und (grafische) Taschenrechner kennen allerdings keinen Zufall. Sie machen ausschließlich das, was ihnen aufgetragen wurde. Sie durchlaufen einfach nur den einprogrammierten Code. Daher ist es ihnen unmöglich, echte Zufallszahlen zu generieren. Dieses Problem wird durch Pseudozufallszahlengeneratoren umschifft.
Simulation für den MINT-Unterricht
Im Schulunterricht wird die Funktion rand() zum Beispiel im Fach Stochastik genutzt, um Zufallsexperimente zu simulieren. Eine mögliche Aufgabe wäre, die Passagierzahlen von 500 Flügen mit dieser Funktion zu simulieren, um festzustellen, ob sich Überbuchungen für eine Fluggesellschaft statistisch gesehen lohnen. Die Aufgabe samt der Lösung finden Sie hier:
Auch der Mersenne-Twister nutzt zu Beginn die duale Schreibweise
So funktioniert der Mersenne-Twister
Die rand()-Funktion in Excel wendet einen der am meisten genutzten Pseudozufallszahlengeneratoren an: den Mersenne-Twister (siehe Videotipps). Dieser Algorithmus ist so populär, weil die Zufallszahlen, die er generiert, sehr gleichmäßig verteilt sind und man bei praktischen Anwendungen davon ausgehen kann, dass seine Zahlenfolgen sich nicht wiederholen. Zudem ist der Algorithmus sehr schnell. Der Mersenne-Twister beginnt mit 624 Startzahlen in ihrer dualen Schreibweise – also als Reihen von Einsen und Nullen. Um eine neue Zufallszahl zu erstellen, kombiniert und verschiebt der Algorithmus drei dieser Reihen in mehreren Schritten. Diese neue Zahl ersetzt die ursprüngliche Startzahl. Die hat die gleichen Eigenschaften wie eine Zufallszahl, ist aber nicht wirklich zufällig. Wenn man den Algorithmus nämlich mit den gleichen 624 Zahlen startet, wird er immer die gleiche Zahlenfolge erzeugen. Der Startzahl, dem sogenannten Seed, kommt also große Bedeutung zu. Wer den Seed errät, kann die ganze daraus folgende „zufällige“ Zahlenfolge ermitteln. Seeds können aus allen möglichen Dingen abgeleitet werden, die mehr oder weniger zufällig sind: aus Tastaturanschlägen, der aktuellen Uhrzeit in Millisekunden, dem 168.-beliebtesten Spotify-Song auf Tahiti oder dem thermischen Rauschen eines elektronischen Computerbestandteils, um nur einige Beispiele zu nennen. Dabei könnten Hacker*innen natürlich eher ein Muster in Tastaturanschlägen finden, um diese vorherzusagen, als in natürlichen Phänomenen wie atmosphärischem Rauschen oder radioaktivem Zerfall. Allerdings sind Letztere auch sehr viel schwerer zu messen.
Auch Komplexität lässt sich erzeugen
Es ist also nicht ganz einfach, ohne allzu großen Aufwand Startzahlen zu finden, die man nicht zu einfach erraten kann. Aber je komplexer Dinge sind, desto schwieriger sind sie vorherzusagen. Und Komplexität lässt sich auch auf andere Weise erzeugen. Wenn man zum Beispiel zwei relativ schwache Startzahlen hat, etwa die Uhrzeit und Mausklicks, kann man diese kombinieren. Vergleichbar ist das damit, dass man etwa zum Geldabheben nicht nur die Girokarte braucht, sondern auch noch den PIN-Code. Wenn man aber eine Zufallszahl braucht, um einen Pseudozufallszahlengenerator zu starten, warum nimmt man dann nicht gleich die Startzahl? Moderne Anwendungen brauchen oft sehr viele Zufallszahlen. Besonders wenn man natürliche Prozesse misst, kann man nicht schnell genug tatsächlich zufällige Zahlen ermitteln. Pseudozufallszahlengeneratoren sind da sehr viel schneller. Mit nur einem Satz an Startzahlen kann der Mersenne-Twister 4,3 × 106001-mal neue Werte generieren, bevor die Zahlenfolge sich wiederholt.