Funktionen

Zufallszahlen

Zur Erzeugung der Zufallszahlen stehen 3 unterschiedliche Zufallsgeneratoren zur Auswahl. rand ist die Standardfunktion aus der stdlib zur Generierung von Zahlen. Allerdings handelt es sich um Pseudozufallszahlen. Zur Initialisierung verwende ich hier wie üblich die time-Funktion. Den modulo-Operator verwende ich nicht um die Qualität des Ergebnisses zu verbessern. CryptGenRandom ist eine spezielle Funktion von windows, die zahlreiche Parameter der Hardware verwendet um zufällige Zahlen zu berechnen. Mersenne Twister wurde von Japanern in C entwickelt. Ich verwende die C++ Implementierung RandomLib 1.9 von Charles Karney um Zahlen auf Basis dieses Algorithmus zu erzeugen. Die unterschiedlichen Arbeitsweisen der Generatoren wird in der Anzahl der Durchläufe deutlich. Sie hängt von zusätzlichen Faktoren wie die Anzahl der Tippfelder und Zahlenquelle ab. Beim Modus "Zufall Plus" sind die Durchläufe erhöht da hier bei unterschiedlichen Tippfeldern doppelte Zahlen vermieden werden. Mit steigender Anzahl von Tippfeldern stehen weniger Zahlen zur Auswahl. Primzahlen sind Zahlen die nur durch sich selbst und durch 1 teilbar sind.

Zufallsgenerator

Als Zufallsgenerator stehen die rand-, die CryptGenRandom-Funktion von windows und eine Mersenne-Twister Implementierung zur Auswahl. Außer bei CryptGenRandom handelt es sich um sogenannte deterministische Pseudozufallgeneratoren. Sie erzeugen keine 100% zufälligen Zahlenreihen wie es die Lottokugelmaschine in der Lage ist. Deswegen sind sie für kryptologische Zwecke nicht verwendbar. windows stellt ab Version XP über die Cryptography API echte Zufallszahlen zur Verfügung, die auf vielen Parametern des aktuell laufenden Betriebssystems und verwendeter Hardware basieren. Diese Parameter sind stets zufällig und können nicht reproduziert werden. Der Mersenne Twister Algorithmus wurde 1997 von den Japanern Makoto Matsumoto und Takuji Nishimura entwickelt. Er besteht alle durchgeführten Tests bis den auf lineare Abhängigkeit. Dieser spielt aber nur bei der Erzeugung großer Mengen von Zufallszahlen eine Rolle.