首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何实现一个类似random.choice()的函数来返回可重现的结果?

我如何实现一个类似random.choice()的函数来返回可重现的结果?
EN

Stack Overflow用户
提问于 2011-08-29 14:36:57
回答 2查看 1.5K关注 0票数 3

我想把一个固定的种子(字符串)传递给一个函数,然后让它从列表中随机选择一项。然而,如果它使用的是相同的种子,那么它应该是来自相同列表的相同项目!显然,这根本不是随机的,但它或多或少应该看起来是随机的,并且大致均匀分布。它一定也很快。

为了演示,这就是随机的工作原理。

代码语言:javascript
复制
>>> random.seed('Python')
>>> random.choice([1,2,3,4,5,6,7,8,9,0])
3
>>> random.choice([1,2,3,4,5,6,7,8,9,0])
6
>>> random.choice([1,2,3,4,5,6,7,8,9,0])
2

我想要的是这个。

代码语言:javascript
复制
>>> notrandom([1,2,3,4,5,6,7,8,9,0],seed='Python')
4
>>> notrandom([1,2,3,4,5,6,7,8,9,0],seed='Python')
4
>>> notrandom([1,2,3,4,5,6,7,8,9,0],seed='Python')
4

只有当相同的列表与相同的种子字符串一起使用时,它才需要是可重现的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-29 14:43:47

the Python doc for random中,我认为这就是您想要的:

此模块提供的函数实际上是random.Random类的隐藏实例的绑定方法。您可以实例化自己的Random实例,以获得不共享状态的生成器。

喜欢,

代码语言:javascript
复制
> r = random.Random()

> r.seed('Hi')
> r.random()
0.3787897089299177

> r.seed('Hi')
> r.random()
0.3787897089299177
票数 3
EN

Stack Overflow用户

发布于 2011-08-29 14:41:37

第一次,从列表中选择一个随机数,然后对种子进行散列,并将该对保存在一个数组中。

然后,散列种子并将其用作数组中的键。

这显然是一个糟糕的解决方案,但我认为在这里它可以做到这一点。

编辑:我刚看到它也是同样的输入列表。因此,对列表进行散列,并保存该散列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7226901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档