はじめに
PythonとNumpyは、ランダム数値を生成するための標準ライブラリを提供しています。ランダム数値は、シミュレーションや暗号化などの分野で広く使われています。しかし、ランダム数値は予測が困難であるため、再現性を持たせるためにRandom Seedを設定することが重要です。
Pythonにおけるrandomとrandom.seedの基本的な説明
Pythonのrandomモジュールは、様々な種類のランダム数値を生成するための関数を提供しています。random.seed関数は、ランダム数列を生成するアルゴリズムに与える初期値を設定するための関数です。同じ初期値を与えると、同じランダム数列が生成されます。
import random random.seed(0) print(random.random()) # 0.8444218515250481 random.seed(0) print(random.random()) # 0.8444218515250481
上記のコードでは、random.seed関数に0を与えています。同じ初期値を与えた場合、同じランダム数列が生成されることが確認できます。
Numpyにおけるrandomとrandom.seedの基本的な説明
Numpyのrandomモジュールは、Pythonのrandomモジュールと同様に、様々な種類のランダム数値を生成するための関数を提供しています。random.seed関数は、ランダム数列を生成するアルゴリズムに与える初期値を設定するための関数です。
import numpy as np np.random.seed(0) print(np.random.rand()) # 0.5488135039273248 np.random.seed(0) print(np.random.rand()) # 0.5488135039273248
上記のコードでは、np.random.seed関数に0を与えています。同じ初期値を与えた場合、同じランダム数列が生成されることが確認できます。
Pythonでのrandom.seedのデフォルト設定について
random.seed関数は、デフォルトで現在の時刻を初期値として設定します。これは、毎回異なるランダム数列を生成するための設定です。
import random print(random.random()) # 0.5386647680113555 print(random.random()) # 0.4191945144032948
上記のコードでは、random.seed関数を呼び出していませんが、ランダム数列が生成されています。これは、デフォルトで現在の時刻が初期値として設定されるためです。
Numpyでのrandom.seedのデフォルト設定について
Numpyのrandom.seed関数も、デフォルトで現在の時刻を初期値として設定します。
import numpy as np print(np.random.rand()) # 0.6027633760716439 print(np.random.rand()) # 0.5448831829968969
上記のコードでは、np.random.seed関数を呼び出していませんが、ランダム数列が生成されています。これは、デフォルトで現在の時刻が初期値として設定されるためです。
ランダムなDatetimeを生成する。
ランダムなDateTimeを生成する方法は以下の記事の「Random Datetime生成の方法」にサンプルスクリプトを記載しているのでご確認ください。
まとめ
PythonとNumpyを使ったRandom Seedの設定について解説しました。ランダム数値を扱う場合は、再現性を持たせるためにRandom Seedを設定することが重要です。Pythonのrandom.seed関数とNumpyのrandom.seed関数は、初期値を設定するための関数です。必要に応じてSeedを固定しましょう。