我想把一个固定的种子(字符串)传递给一个函数,然后让它从列表中随机选择一项。然而,如果它使用的是相同的种子,那么它应该是来自相同列表的相同项目!显然,这根本不是随机的,但它或多或少应该看起来是随机的,并且大致均匀分布。它一定也很快。
为了演示,这就是随机的工作原理。
>>> 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我想要的是这个。
>>> 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只有当相同的列表与相同的种子字符串一起使用时,它才需要是可重现的。
发布于 2011-08-29 14:43:47
在the Python doc for random中,我认为这就是您想要的:
此模块提供的函数实际上是random.Random类的隐藏实例的绑定方法。您可以实例化自己的Random实例,以获得不共享状态的生成器。
喜欢,
> r = random.Random()
> r.seed('Hi')
> r.random()
0.3787897089299177
> r.seed('Hi')
> r.random()
0.3787897089299177发布于 2011-08-29 14:41:37
第一次,从列表中选择一个随机数,然后对种子进行散列,并将该对保存在一个数组中。
然后,散列种子并将其用作数组中的键。
这显然是一个糟糕的解决方案,但我认为在这里它可以做到这一点。
编辑:我刚看到它也是同样的输入列表。因此,对列表进行散列,并保存该散列。
https://stackoverflow.com/questions/7226901
复制相似问题