python random在循环中的行为不如预期

时间:2017-11-14 15:57:49

标签: python

我有两个python随机的例子给出不同的结果,虽然逻辑上它们应该是相同的

    In [8]: random.seed(100)

In [9]: for i in range(2):
   ...: 
   ...: 
   ...:     a = [1,2,3,45]
   ...:     random.shuffle(a)
   ...:     random.randint(10,20)
   ...:     print a
   ...:     random.seed(100)
   ...:     
[1, 45, 3, 2]
[45, 3, 2, 1]


In [6]: for i in range(2):
   ...:     random.seed(100)
   ...:    
   ...:     a = [1,2,3,45]
   ...:     random.shuffle(a)
   ...:     random.randint(10,20)
   ...:     print a
   ...:     random.seed(100)
   ...:     
   ...:     
[45, 3, 2, 1]
[45, 3, 2, 1]

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:1)

第一次调用shuffle()之前,您没有在第一个示例中为随机数生成器播种,因此您将获得(伪)随机结果。

在下面的示例中,您始终在调用shuffle()之前为随机数生成器播种,因此您将始终获得相同的结果。