web-dev-qa-db-fra.com

Différence entre np.random.seed () et np.random.RandomState ()

Je sais que pour semer le caractère aléatoire de numpy.random et pouvoir le reproduire, je devrais nous:

import numpy as np
np.random.seed(1234)

mais que fait np.random.RandomState()?

56
eran

Si vous voulez définir la graine qui appelle à np.random... utilisera, utilisera 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]])

Utilisez la classe pour éviter d’impacter l’état global de numpy:

r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 ,  6.22108771,  4.37727739,  7.85358584,  7.79975808])

Et cela maintient l'état comme avant:

r.Rand(2,3)
#array([[ 0.27259261,  0.27646426,  0.80187218],
#       [ 0.95813935,  0.87593263,  0.35781727]])

Vous pouvez voir l'état de la sorte de classe 'globale' avec:

np.random.get_state()

et de votre propre instance de classe avec:

r.get_state()
64
askewchan

np.random.RandomState() construit un générateur de nombres aléatoires. Cela n'a aucun effet sur les fonctions autonomes de np.random, mais doit être utilisé explicitement:

>>> 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])
9
Fred Foo

random.seed est une méthode pour remplir random.RandomState conteneur.

de numpy docs:

numpy.random.seed(seed=None)

Semez le générateur.

Cette méthode est appelée lorsque RandomState est initialisé. Il peut être appelé à nouveau pour réensemencer le générateur. Pour plus de détails, voir RandomState.

class numpy.random.RandomState

Conteneur du générateur de nombres pseudo aléatoires de Mersenne Twister.

8
Dmitry Nazarov