27

モジュール内の 1 つのクラスでPython 関数を使用する場合random.seed(my_seed)、このシードは、このモジュールでインスタンス化された他のすべてのクラスに残りますか?

4

1 に答える 1

34

はい、シードはRandom()モジュール内の (非表示の) グローバル インスタンスに設定されています。ドキュメントから:

このモジュールによって提供される関数は、実際にはrandom.Randomクラスの隠しインスタンスのバインドされたメソッドです。の独自のインスタンスをインスタンス化して、Random状態を共有しないジェネレーターを取得できます。

Random()シードを別々に保持する必要がある場合は、別々のインスタンスを使用してください。インスタンス化するときに新しいシードを渡すことができます。

>>> from random import Random
>>> myRandom = Random(anewseed)
>>> randomvalue = myRandom.randint(0, 10)

クラスは、モジュールと同じインターフェースをサポートします。

于 2012-09-11T11:51:58.127 に答える