Pythonでランダムシードを設定する方法を知っています
random.seed([x])
シードが設定されたら、それを読み戻して、seed()関数に渡された値を把握する方法はありますか?
PythonのRandom(Mersenne Twister)の基礎となるアルゴリズムは決定論的ですが、シードは実装のメモリ空間のどこにも格納されません。必要に応じて、シードを保存するのは呼び出し元の責任です。
http://docs.python.org/library/random.html#module-random
Pythonの実装の詳細(またはランダムクラスを格納する独自のシードでオーバーライドする)については、以下を参照してください。
http://hg.python.org/cpython/file/0b650272f58f/Lib/random.py
と
http://hg.python.org/cpython/file/0b650272f58f/Python/random.c
シード自体を取り戻す方法はありません。シードは、乱数ジェネレーターの内部状態を更新するために使用され、どこにも直接保存されません。
ただし、現在の状態を保存する方法があります。ランダムモジュールは、メルセンヌツイスター疑似乱数ジェネレーターに基づいており、Cで実装されています(_random拡張モジュールを使用)。あなたはこれを行うことができます:
import random
r = random.Random()
# Use the r object to generate numbers
# ...
curstate = r.__getstate__()
# Use it even more..
#
r.__setstate__(curstate) # Go back to previous state
つまり、random.Random()オブジェクトをピクルス化でき、ピクルス化されたオブジェクト(または__getstate__
/__setstate__
メソッドを直接)を使用して前の状態に戻ることができます。