2016-05-20 16 views
4

Pythonのランダムなように見えますが、それを変更するモジュールは互いに影響し合います。Pythonの乱数ジェネレータをローカルシードで使用する方法は?

多くの第三者モジュールがありますが、Pythonの標準ライブラリを使用して、コンテキストのローカルな乱数を持つ方法があります。

random.get/setstateを使用せずに、異なるモジュールのコードを混在させると問題になる可能性があります)。各モジュールは独自のランダムなコンテキストを使用することができます

のような何か...

r = random.context(seed=42) 
number = r.randint(10, 20) 

答えて

7

From the docs:このモジュールによって供給される

機能は、実際random.Randomクラスの隠されたインスタンスのメソッドを結合しています。 Randomのインスタンスをインスタンス化して、状態を共有しないジェネレータを取得することができます。

random.Randomインスタンスを作成して使用します。

rng = random.Random(42) 
number = rng.randint(10, 20) 
+2

ありがとうございます!私は、これがより顕著に文書化されていることを期待していましたが、段落の真ん中にプレーンテキストとして参照されていました。 - https://docs.python.org/3/library/random.html - 見出しやサンプルコードなし。 – ideasman42

関連する問題