15

Pythonで、特定のシードを使用して、グローバル状態を再シードせずに乱数を生成するための最良の方法は何ですか?Javaでは、次のように簡単に書くことができます。

Random r = new Random(seed);
r.nextDouble();

規格Math.random()は影響を受けません。Pythonで、私が見ることができる最良の解決策は次のとおりです。

old_state = random.getstate()
random.seed(seed)
random.random()
random.setstate(old_state)

これは慣用的なPythonですか?古いシードを「復元」する必要のないJavaソリューションよりもはるかにクリーンではないようです。これを行うためのより良い方法があるかどうか知りたいです。

4

1 に答える 1

27

Random独自のオブジェクトをインスタンス化できます。

myrandom = random.Random(myseed)

randomモジュールは の独自のインスタンスを管理します。このインスタンスは、Randomに加えられた変更の影響を受けませんmyrandom

于 2012-06-17T20:30:42.013 に答える