Gleichbleibende Zufallszahlenfolgen in Matlab
In dieser Lektion werde ich Ihnen zeigen, wie Sie in Matlab durchgehend gleichbleibende Zufallszahlenfolgen generieren können.
Warum gleichbleibende Zufallszahlen erzeugen? Die Generierung von Zufallszahlen beruht auf Algorithmen, die aus Startwerten Listen von Pseudozufallszahlen nach statistischen Verteilungen erzeugen. Diese Zufallszahlenfolgen variieren normalerweise von Sitzung zu Sitzung. Doch es gibt Situationen, in denen es sinnvoll ist, mit einer konstanten Folge von Zufallszahlen zu arbeiten, beispielsweise beim Testen von Programmen.
Um konstante Zufallszahlenfolgen zu erstellen, können Sie den Zustand der Sequenz in einer Variablen abspeichern.
>> x=rand("state");
So können Sie den Zustand der rand()-Funktion am Anfang Ihres Skripts oder Ihrer Sitzung mit der Variable x festlegen.
>> rand("state",x);
Dieser Matlab-Befehl gewährleistet, dass Sie jedes Mal dieselbe Folge von Zufallszahlen erhalten.
Lassen Sie mich Ihnen ein praktisches Beispiel geben.
Erzeugen Sie eine Matrix aus zufälligen Ganzzahlen.
>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3
Jetzt laden Sie die Zufallszahlen-Generierung wieder in den Speicher, indem Sie die Variable x verwenden.
>> rand("state",x);
Erzeugen Sie anschließend eine weitere zufällige 3x3-Matrix.
>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3
Die beiden Matrizen werden identisch sein.
Auf diese Weise können Sie dieselbe Sequenz von Zufallszahlen mehrfach erzeugen.
Hinweis: Um dieselbe Variable x in unterschiedlichen Sitzungen oder auf anderen Computern zu nutzen, speichern Sie den Inhalt der Variablen in einer Datei auf Ihrem Rechner und laden Sie diese beim Start einer neuen Matlab-Sitzung.
Zurücksetzen der Zufallszahlenfolge
Um die aktuelle Zufallszahlenfolge zurückzusetzen, verwenden Sie als zweiten Parameter die 0.
Um beispielsweise die zuvor gespeicherte Zufallszahlenfolge in die Variable x zu laden, geben Sie rand("state", x) ein.
>> rand("state",x);
Erstellen Sie eine Matrix aus zufälligen Ganzzahlen.
>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3
Geben Sie nun rand("state", 0) ein, um die Folge zurückzusetzen.
>> rand("state",0)
Erzeugen Sie dann eine zufällige 3x3-Matrix.
>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3
Das Ergebnis wird jedes Mal die gleiche Matrix sein.