Python Hinweis: Was bedeutet es, einen Startwert mit Zufallszahlengenerierung zu setzen?

Motivation

Wenn ich "Detaillierte Erklärung Deep Learning Tensorflfow / Keras Zeitreihendatenverarbeitung" las, das um den Mai dieses Jahres veröffentlicht wurde, generieren Sie Zufallszahlen. Der Teil kam heraus.

Es wurde gesagt, dass der Startwert jedes Mal dieselbe Zufallszahl generiert, aber ich habe die Beschreibung hier nicht verstanden, also habe ich sie kurz überprüft.

Pseudozufallszahl

Die durch die Zufallsfunktion erzeugte Zufallszahl ist eine Pseudozufallszahl. [Pseudo Random-Wikipedia](https://ja.wikipedia.org/wiki/Pseudo Random) Erstens ist eine Pseudozufallszahl ein numerischer Wert, der wie eine unregelmäßige Zufallszahl aussieht, aber durch eine bestimmte deterministische Berechnung (fester Algorithmus?) Als zufällig berechnet wird.

Dies bedeutet, dass der numerische Wert, der als Anfangszustand bei der Berechnung der Pseudozufallszahl festgelegt wird, der Startwert ist.

Durch Setzen dieses Startwerts auf denselben numerischen Wert wird jedes Mal dieselbe Pseudozufallszahl generiert, daher habe ich viele Male versucht, Pseudozufallszahlen mit festem Startwert zu generieren.

rand_generation.py


import bumpy as np 

rng = np.random.RandomState(100)

for i in range(10):
  print(rng.randn(5)) #randn :Aus der Standardnormalverteilung entnommen

Generierungsergebnis: [-1.74976547 0.3426804 1.1530358 -0.25243604 0.98132079] [ 0.51421884 0.22117967 -1.07004333 -0.18949583 0.25500144] [-0.45802699 0.43516349 -0.58359505 0.81684707 0.67272081] [-0.10441114 -0.53128038 1.02973269 -0.43813562 -1.11831825] [ 1.61898166 1.54160517 -0.25187914 -0.84243574 0.18451869] [ 0.9370822 0.73100034 1.36155613 -0.32623806 0.05567601] [ 0.22239961 -1.443217 -0.75635231 0.81645401 0.75044476] [-0.45594693 1.18962227 -1.69061683 -1.35639905 -1.23243451] [-0.54443916 -0.66817174 0.00731456 -0.61293874 1.29974807] [-1.73309562 -0.9833101 0.35750775 -1.6135785 1.47071387]

Oh, ich dachte, dass es jedes Mal eine andere Zufallszahl sein würde, wenn es generiert wird, aber es scheint, dass die zweite und nachfolgende Generation basierend auf der zuvor generierten Zufallszahl neu generiert werden. https://teratail.com/questions/15388 (Ich habe dies als Referenz verwendet.)

Im obigen Skript wird der Startwert auf 100 gesetzt und eine Pseudozufallszahlenliste der Länge 5 wird 10 Mal generiert (dh die Zufallszahl wird 50 Mal generiert?). Sie ist also jedes Mal anders.

Wenn ich dasselbe Skript erneut ausführte, wurde dieselbe Zufallszahl generiert.

Durch Verwendung des gleichen Startwerts erzeugt derselbe Algorithmus immer die gleiche erste Pseudozufallszahl. ↓ Eine zweite Pseudozufallszahl wird basierend auf der ersten Pseudozufallszahl erzeugt. Wenn also die erste immer gleich ist, ist die zweite immer gleich ...

Es bedeutet zu wiederholen. Die Tatsache, dass jedes Mal dieselbe Pseudozufallszahl erzeugt wird, bedeutet, dass dieselbe Pseudozufallszahlenfolge ab dem Zeitpunkt erzeugt wird, zu dem der Startwert gesetzt wird. (Wenn Sie darüber nachdenken, ist es keine Zufallszahl mehr, wenn immer dieselbe Zufallszahl generiert wird.)

Selbst beim maschinellen Lernen wissen Sie möglicherweise nicht, ob es sich um den Leistungsunterschied handelt, wenn Sie die Leistung anhand zufälliger numerischer Werte bewerten möchten, wenn Sie jedes Mal unterschiedliche Zufallszahlen verwenden, da es sich um einen Unterschied in den Zufallszahlen oder das Ergebnis einer Verbesserung der Parameter usw. handelt. Es scheint, dass es verschiedene Verwendungszwecke gibt.

Übrigens, wenn Sie keinen Startwert festlegen, können Sie anscheinend garantieren, dass der Startwert jedes Mal anders ist, indem Sie die Systemzeit als Startwert verwenden. War es so ein Durcheinander? https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.RandomState.html (Ich habe dies als Referenz verwendet.)

Wenn jemand damit vertraut ist ...

Bedeutet dies, dass die n-1. Pseudozufallszahl der Keim ist, wenn die n-te Pseudozufallszahl erzeugt wird?

Recommended Posts

Python Hinweis: Was bedeutet es, einen Startwert mit Zufallszahlengenerierung zu setzen?
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Was bedeutet das letzte () in einer Funktion in Python?
[Python] Memorandum über zufällige Generationen
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
[Python] Was ist ein Tupel? Erklärt, wie man es benutzt und wie man es benutzt, ohne zu tippen.
[Python] Was ist eine with-Anweisung?
[Python] Was ist ein Slice? Eine leicht verständliche Erklärung zur Verwendung anhand eines konkreten Beispiels
Zufallsgenerator für französische Zahlen mit Python
Was tun mit PYTHON Release?
[Python] Was ist ein formales Argument? So stellen Sie den Anfangswert ein
Was bedeutet es, den WEG zu durchlaufen? Wo sind die Befehle?
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
Versuch, SQLite3 mit Python zu handhaben [Hinweis]
Was ich mit Python-Arrays gemacht habe
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Erstellen eines Python-Tools zur Dokumentgenerierung, da die Verwendung von Sphinx schwierig ist
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Lesen einer CSV-Datei mit Python 2/3
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich möchte ein Spiel mit Python machen
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Warum muss Python einen Doppelpunkt schreiben?
Schritte zum Erstellen eines Twitter-Bots mit Python
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Beurteilen Sie, ob es sich um eine Primzahl handelt [Python]
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Ich möchte mit Python in eine Datei schreiben
Zubu Amateur will Python starten
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Bash (Shell Script), ich hasse es nicht mehr: Was ich recherchiert habe, um Bash durch Python 3.x zu ersetzen
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So richten Sie eine Python-Umgebung mit pyenv ein
Python Ver. Einführung in WebPay mit ein wenig Code
Lesehinweis: Einführung in die Datenanalyse mit Python
Ich möchte mit einem Roboter in Python arbeiten.
Beachten Sie beim Initialisieren einer Liste in Python
Vom Kauf eines Computers bis zur Ausführung eines Programms auf Python
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Hinweise zur Beschleunigung des Python-Codes mit Numba
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Ich möchte einen Quantencomputer mit Python betreiben
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein