1. ホーム
  2. python

[解決済み] np.random.seed()とnp.random.RandomState()の違いについて

2023-01-06 10:55:30

質問

numpy.randomのランダム性をシードし、それを再現できるようにするために、私たちがすべきことは分かっています。

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

とありますが np.random.RandomState() は何をするのでしょうか?

どのように解決するのですか?

を呼び出すシードを設定したい場合は、以下のようにします。 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()