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

python random在循环中的行为不符合预期,python,Python,我有两个python random示例,它们给出了不同的结果,尽管逻辑上它们应该是相同的 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.

我有两个python random示例,它们给出了不同的结果,尽管逻辑上它们应该是相同的

    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]

有人能解释这种行为吗?

在第一次调用shuffle()之前,您的第一个示例中没有植入随机数生成器,因此您将得到一个(伪)随机结果


在下面的示例中,您总是在调用shuffle()之前对随机数生成器进行种子设定,因此始终会得到相同的结果。

您是否已多次运行此操作?你确定你的random.shuffle()没有将其按完全相同的顺序洗牌吗?是的。我使用了ipython,因此它显示了第二个循环中的命令运行顺序。它用于洗牌的随机序列在每次迭代中都是相同的。@blacksite这不是问题,它只会将随机计数器向下移动10次。我在一个程序中使用了类似的方法来帮助使选项更随机,我计算了用户点击按钮所花的时间,然后使用
random.randint(0,num\u of_毫秒)
来更改它。randint从未设置为任何值,它只是运行随机计数器,以便生成不同的值。@Aceminer使用新的编辑,我无法复制您的结果,结果是相同的。试着在这里运行:()我编辑了我的示例以更好地说明我的观点。我错过了,我在另一台电脑上试试。我肯定我没有做任何古怪的事