web-dev-qa-db-ja.com

pythonでプログラム全体にランダムシードを設定します

かなり大きなプログラムがあり、さまざまなファイルでrandomモジュールの関数を使用しています。プログラムが常に同じ結果を返すように、ランダムシードを一度に1か所で設定できるようにしたいと思います。 pythonでも実現できますか?

66
Mischa Obrecht

メインのpythonモジュールは_import random_を呼び出し、random.seed(n)を呼び出す必要があります-これは他のrandomのすべてのインポート間で共有されます。シードをリセットしません。

96
Jon Clements

zss のコメントは、実際の回答として強調表示する必要があります。

人々が注意するべきもう一つのこと:numpy.randomを使用している場合、numpy.random.seed()を使用してシードを設定する必要があります。 random.seed()を使用しても、numpy.randomから生成された乱数のシードは設定されません。これはしばらく私を混乱させました。 -zss

22
Sida Zhou

アプリケーションの最初にrandom.seed(x)を呼び出して、xが常に同じであることを確認します。これにより、アプリケーションの各実行中に擬似乱数のシーケンスが同じになることが保証されます。

8
Chimera

ジョン・クレメンツは私の質問にほぼ答えています。しかし、実際の問題ではありませんでした。コードのランダム性の理由は、numpy.linalg SVDであったことが判明しました。

同じ問題がある場合は、コードで必ず確認してください!

2
Mischa Obrecht