Ich weiß, dass ich, um die Zufälligkeit von numpy.random zu säen und sie reproduzieren zu können, Folgendes tun sollte:
import numpy as np
np.random.seed(1234)
aber was macht
np.random.RandomState()
das
Ich weiß, dass ich, um die Zufälligkeit von numpy.random zu säen und sie reproduzieren zu können, Folgendes tun sollte:
import numpy as np
np.random.seed(1234)
aber was macht
np.random.RandomState()
das
Antworten:
Wenn Sie den Startwert festlegen möchten, zu dem Aufrufe np.random...
verwendet werden, verwenden Sie np.random.seed
:
np.random.seed(1234)
np.random.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
np.random.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Verwenden Sie die Klasse, um Auswirkungen auf den globalen Numpy-Status zu vermeiden:
r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
Und es hält den Staat wie bisher aufrecht:
r.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Sie können den Status der Art 'globaler' Klasse mit folgender Adresse anzeigen:
np.random.get_state()
und Ihrer eigenen Klasseninstanz mit:
r.get_state()
This method is called when RandomState is initialized. It can be called again to re-seed the generator.
Es sagt nichts über die Tatsache aus, dass ich beim Aufrufen dieser Methode nur eine globale Instanz (oder was auch immer) und keine der anderen RandomState
Instanzen betroffen habe .
numpy.random
Moduldokumentation sollte klar angegeben sein, dass das Modul effektiv mit einer Instanz von initialisiert wurde RandomState
. Aber es gibt überhaupt keine Dokumentation zum Modul selbst, die ich finden kann.
np.random.RandomState()
erstellt einen Zufallszahlengenerator. Es hat keine Auswirkungen auf die freistehenden Funktionen in np.random
, muss aber explizit verwendet werden:
>>> rng = np.random.RandomState(42)
>>> rng.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])
>>> rng2 = np.random.RandomState(42)
>>> rng2.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])
random.seed ist eine Methode zum Füllen des random.RandomState- Containers.
von numpy docs:
numpy.random.seed(seed=None)
Den Generator aussäen.
Diese Methode wird aufgerufen, wenn RandomState initialisiert wird. Es kann erneut aufgerufen werden, um den Generator neu zu starten. Weitere Informationen finden Sie unter RandomState.
class numpy.random.RandomState
Container für den Pseudozufallszahlengenerator Mersenne Twister.
np.random.RandomState () - eine Klasse, die mehrere Methoden basierend auf unterschiedlichen Wahrscheinlichkeitsverteilungen bereitstellt.
np.random.RandomState.seed () - wird aufgerufen, wenn RandomState () initialisiert wird.