web-dev-qa-db-ja.com

np.random.seed()とnp.random.RandomState()の違い

Numpy.randomのランダム性をシードし、それを再現できるようにするには、次のようにする必要があります。

_import numpy as np
np.random.seed(1234)
_

しかし、np.random.RandomState()は何をしますか?

56
eran

np.random...への呼び出しが使用するシードを設定する場合は、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]])

クラスを使用して、グローバルなnumpy状態への影響を回避します。

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

そして、以前と同じ状態を維持します。

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

次のコマンドで、「グローバル」クラスの状態を確認できます。

np.random.get_state()

そして、あなた自身のクラスインスタンスの:

r.get_state()
64
askewchan

np.random.RandomState()は、乱数ジェネレーターを構築します。 np.randomの独立した関数には影響しませんが、明示的に使用する必要があります。

>>> 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 は、埋めるためのメソッドです random.RandomState コンテナ。

numpy docsから:

numpy.random.seed(seed=None)

ジェネレータにシードします。

このメソッドは、RandomStateが初期化されるときに呼び出されます。再度呼び出して、ジェネレータを再シードできます。詳細については、RandomStateを参照してください。

class numpy.random.RandomState

Mersenne Twister擬似乱数ジェネレーターのコンテナー。

8
Dmitry Nazarov