【问题标题】:How to get truly random numbers after seed set in python [duplicate]如何在python中设置种子后获得真正的随机数[重复]
【发布时间】:2017-11-05 12:52:50
【问题描述】:

对于我的部分代码,我需要在每次运行代码时获取相同的“随机”数字,并使用random.seed(0) 确保每次返回相同的数字。但是,在代码的单独部分,我希望每次运行代码时都有不同的数字。但是,一旦设置了种子,每次调用任何随机函数时,它们返回的数字总是相同的。如何将预先确定的随机数与随机数结合起来?

【问题讨论】:

  • 通过使用两个不同的 PRNG 对象(有时称为流)。一个恒定种子;一种由时间或外部熵播种,具体取决于用例。提示:r = random.Random()。备注:与在不同用途之间获取/设置内部状态相比,这更简单,性能更高。
  • 感谢 Sascha - 如果这是一个真正的“答案”,我肯定会将其标记为最佳答案!

标签: python python-3.x


【解决方案1】:

您可以使用getstatesetstate,类似于

import random

state = random.getstate()  # saving the current state of the generator

random.seed(0)
random.randint(1, 10)

# some more fiddling with random
# ...

random.setstate(state)  # restore the original state

来自文档的信息:https://docs.python.org/3.5/library/random.html#random.getstate

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2010-12-19
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多