kaggleをしていると見慣れない関数のpartyが夜通し開催されています。
その中で、numpy.randomでの乱数生成の方法が少し変わったぽいので忘れないうちに書いておきます。
従来
例えば、整数をランダムに呼び出したいならnp.random.randint(n, m)
みたいな感じでした
正規表現ならnp.random.normal(loc=u, scale=s)
みたいな感じでした(loc: 平均, scale:標準偏差)
現在
https://numpy.org/doc/stable/reference/random/generator.html
一応従来の方法も使えるんで、早急な対応が必要というわけでもなさそうですが、現在のnumpy側の推奨は
- np.random.default_rng()でインスタンス化
- このインスタンスから欲しい乱数を定義
という流れになったそうです。
簡単なコード例
print(np.random.normal(loc=10, scale=0.5))
rng = np.random.default_rng(seed=123)
print(rng.normal(loc=10, scale=0.5))
rng = np.random.default_rng()
print(rng.normal(loc=10, scale=0.5))
>>>10.498672723291794
>>>9.505439324826074
>>>9.296869256963326
ってな感じ。
個人的にはどっちが良いって言うのはないですが、インスタンス化の方が少しコードがスッキリしそうな気もします