我知道如何在 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
没有办法取回种子本身。种子用于更新随机数生成器的内部状态,并不直接存储在任何地方。
但是,有一种方法可以保存当前状态!random 模块基于 Mersenne Twister 伪随机数生成器,它是用 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__
方法直接)回到以前的状态。