【问题标题】:Seeding Random in a Single Def [closed]在单个 Def 中随机播种 [关闭]
【发布时间】:2020-07-21 12:55:16
【问题描述】:

在我的程序中,我试图包含一个随机位置生成器,而不是保存生成的每个位置(供人们探索),我宁愿重用我用来生成位置的种子,尽管这可能与我的代码的其他部分发生冲突。有没有办法可以在def的范围内随机播种?或者至少在文件范围内?如果 stdlib random 不可能,是否可以单独使用一个?顺便说一句,我正在使用 python 3.8。

【问题讨论】:

  • @kol 我真的不知道,因为我没有足够的经验来了解解决方案(尽管这是我在这里问的原因,我可以向你保证,我确实搜索过它)。
  • 你能显示一些代码吗?也许是因为没有任何代码没有人可以重现您的问题......
  • @kol,StackOverflow 的提问者应该努力自己找出答案。一个简单的谷歌搜索“python随机数种子”指向this page,上面写着“这个模块提供的函数实际上是random.Random类的隐藏实例的绑定方法。你可以实例化你自己的实例随机获取不共享状态的生成器。”
  • @kol,那么我建议你再次使用tour“不要问...您还没有尝试找到答案的问题(展示您的工作!)” 这是程序员帮助其他程序员的地方解决编程问题。如果您在提出 SO 之前没有尝试过自己解决问题,那么您是在要求人们为您解决问题,而不是让他们帮助您解决问题。

标签: python python-3.x function random random-seed


【解决方案1】:

您可以使用random.seed 或基于特定种子创建新的Random 对象。例如:

>>> from random import Random
>>> randomizer = Random(123)
>>> randomizer.randint(1, 100)
7
>>> randomizer.randint(1, 100)
35
>>> randomizer.randint(1, 100)
12

我可以使用相同的种子再次执行此操作,它会创建相同的随机数集。

>>> randomizer = Random(123)
>>> randomizer.randint(1, 100)
7
>>> randomizer.randint(1, 100)
35
>>> randomizer.randint(1, 100)
12
>>> randomizer = Random(123)
>>> randomizer.randint(1, 100)
7
>>> randomizer.randint(1, 100)
35
>>> randomizer.randint(1, 100)
12
>>> randomizer = Random(123)
>>> randomizer.randint(1, 100)
7
>>> randomizer.randint(1, 100)
35
>>> randomizer.randint(1, 100)
12

有关详细信息,请参阅 Python random module

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 2012-01-30
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2013-12-06
    • 2015-05-10
    • 2010-10-05
    相关资源
    最近更新 更多