python random在循环中的行为不符合预期
我有两个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.
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使用新的编辑,我无法复制您的结果,结果是相同的。试着在这里运行:()我编辑了我的示例以更好地说明我的观点。我错过了,我在另一台电脑上试试。我肯定我没有做任何古怪的事