我知道如何在python中设置随机种子
random.seed([x])
一旦设置了种子,有什么方法可以读回来并找出传递给seed()函数的值是什么?
答案 0 :(得分:4)
虽然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
答案 1 :(得分:3)
无法取回种子本身。种子用于更新随机数生成器的内部状态,并且不会直接存储在任何地方。
然而,有一种方法可以保存当前状态!随机模块基于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()对象可以被pickle,你可以使用pickle对象(或直接__getstate__
/ __setstate__
方法)返回到先前的状态。