私の意図は、Python で再現可能な計算を行う方法に関するガイドラインを作成することです (可能であれば、環境、オペレーティング システムなどに関係なく)。しかし、乱数を生成する問題が頭に浮かびます。防弾の方法を見つけるのに苦労しています(ある場合)。
乱数発生器の出力を再現可能にする標準的な方法は、使用することです
import random
random.seed()
私の知る限り、シードの自動選択はシステムに依存しています。( Python でのrandom.seedのドキュメントを参照してください。)
したがって、より良い方法は、特定の数値を使用してジェネレーターをシードすることです。
import random
random.seed(0)
ただし、組み込みの random を使用せずに を使用するライブラリがありますnumpy.random
。numpy
したがって、シードのジェネレーターも必要です。
import numpy
numpy.random.seed(0)
組み込みrandom
はシングルトンとしてnumpy.random
機能し、同じように機能すると思います。これは、シードを一度設定すると、それがどこでも使用されることを意味します。
コードの冒頭で使用でき、ランダム ジェネレーターに関して計算上の再現性を保証するコード スニペットを作成したいと思います。
両方のジェネレーターを組み合わせて両方のシードを設定し、さらにはオペレーティング システム間で再現性を維持するよりも良い方法はありますか? また、スニペットを可能な限り一般的なものにするために、組み込みの乱数ジェネレーターと numpy 乱数ジェネレーターに追加する必要がある、広く使用されている疑似乱数ジェネレーターに精通していますか?