【发布时间】:2012-12-07 16:06:10
【问题描述】:
是否可以通过指定数量的步骤将随机数生成器“回滚”到较早的状态以获得重复的随机数?
我希望能够做这样的事情:
print(random.random())
0.5112747213686085
print(random.random())
0.4049341374504143
print(random.random())
0.7837985890347726
random.rollback(2) #go back 2 steps
print(random.random())
0.4049341374504143
print(random.random())
0.7837985890347726
我目前唯一的想法是将所有生成的随机数存储到一个列表中以供返回。但是,我个人更喜欢不涉及这样做的方法,因为我计划生成大量随机数,而此函数不会经常使用。
【问题讨论】:
-
您为什么要这样做?你不能用相同的种子重新播种生成器吗?
-
"将所有生成的随机数存储到一个列表中以返回。" - 一个不错的解决方案,我会坚持下去。
-
澄清一下,我希望能够在任意点返回。据我所见, random.getstate() 和 random.setstate() 只允许我回到固定点,除非我保存每个状态(在这种情况下,我宁愿保存所有随机数) .我将随机数用作多个函数的参数,其想法是,如果用户不喜欢特定随机数给出的某个函数的结果,则用户可以使用不同的函数重做。跨度>