1. ホーム
  2. python

[解決済み] numpy.random.seed(0)は何をするのですか?

2022-03-23 02:06:56

質問

とは何ですか? np.random.seed Scikit-Learnのチュートリアルにある以下のコードで何をするのでしょうか?私はNumPyのランダムステートジェネレータのものにあまり詳しくないので、素人目にもわかるような説明をいただけるとありがたいです。

np.random.seed(0)
indices = np.random.permutation(len(iris_X))

解決方法は?

np.random.seed(0) 乱数を予測可能にする

>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])

シードがリセットされた状態(毎度)で 同じ のセットが毎回表示されます。

乱数種がリセットされていない場合。 異なる が起動するたびに表示されます。

>>> numpy.random.rand(4)
array([ 0.42,  0.65,  0.44,  0.89])
>>> numpy.random.rand(4)
array([ 0.96,  0.38,  0.79,  0.53])

(疑似)乱数は、ある数(種)から始めて、それに大きな数を掛け、オフセットを加え、その合計のモジュロを取ることで機能します。 その結果得られた数値を種として、次の乱数が生成されます。 シードを設定すると(毎回)、毎回同じことが行われ、同じ数字が得られます。

一見したところ乱数が欲しい場合は、シードを設定しないでください。 しかし、乱数を使用するコードをデバッグする場合、実行前にシードを設定し、コードを実行するたびに同じことが行われるようにすると非常に便利です。

各実行で最も多くの乱数を取得するために numpy.random.seed() . これは から取得した乱数を種として設定します。 /dev/urandom またはその Windows アナログを使用し、どちらも利用できない場合は時計を使用します。

シードを使って擬似乱数を生成することについての詳しい情報は ウィキペディア .