我想将一个固定的种子(字符串)传递给一个函数,然后让它从列表中随机选择一个项目。但是,如果使用相同的种子,它应该是同一列表中的相同项目!显然这根本不是随机的,但它应该或多或少看起来是随机的并且是平均分布的。它一定也很快。
为了证明,这是随机的方式。
>>> 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
如果相同的列表与相同的种子字符串一起使用,则只需要可重现。
答案 0 :(得分:3)
从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
答案 1 :(得分:0)
第一次,从列表中选择一个随机数,然后对种子进行散列并将该对保存在数组中。
之后,哈希种子并将其用作数组中的键。
这显然是一个糟糕的解决方案,但我认为它可以解决这个问题。
编辑:刚看到它也是同一个输入列表。因此,哈希列表并保存该哈希值。