1. ホーム
  2. python

[解決済み] random.seed()。これは何をするものですか?

2022-03-09 09:41:38

質問

について少し混乱しています。 random.seed() はPythonで行うものです。例えば、以下のトライアルはなぜそうなるのでしょうか(一貫して)?

>>> import random
>>> random.seed(9001)
>>> random.randint(1, 10)
1
>>> random.randint(1, 10)
3
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
7

これに関する良いドキュメントが見つかりませんでした。

どのように解決するのですか?

疑似乱数発生器は、ある値に対して何らかの演算を行うことで動作します。一般にこの値は、ジェネレータによって生成された以前の数です。しかし、初めてジェネレータを使用するときは、前の値はありません。

擬似乱数生成器に種をまくと、最初のquot;previous"値が与えられます。各シード値は、与えられた乱数ジェネレータの生成された値のシーケンスに対応します。つまり、同じシードを2回与えると、同じ数値の並びが2回得られます。

一般に、乱数生成器には、プログラムの実行ごとに変化する何らかの値をシードしたいものです。例えば、現在時刻はよく使われるシードです。このようなことが自動的に起こらないのは、必要であれば、特定のシードを与えて既知の数列を得ることができるようにするためです。