python版本之间的种子随机数不一致吗?

时间:2019-05-25 09:36:18

标签: python random random-seed

问题:

为什么种子随机输出在python版本之间似乎有所不同?我是否错过了明显的事情,是否有记录的行为(我找不到)

观察结果:

尝试在python版本之间重现种子的随机数会产生不同的结果:

# python 3.7
rachel = sorted(Random('rachel').sample(range(57), 6))
larry = sorted(Random('larry').sample(range(57), 6))
armin = sorted(Random('armin').sample(range(57), 6))
laura = sorted(Random('laura').sample(range(57), 6))
rachel, larry, armin, laura

输出:

([8, 22, 27, 35, 45, 47],
 [10, 18, 20, 29, 45, 47],
 [4, 7, 15, 22, 47, 52],
 [5, 8, 37, 40, 50, 55])

比较点:

Raymond Hettinger在Europycon 2011上的高级python的屏幕截图显示了不同的输出-可能是python 2.6或2.7 :(图像质量很差,但是结果明显不同)

enter image description here

1 个答案:

答案 0 :(得分:2)

random模块中查看https://api.flutter.dev/flutter/widgets/ListView/ListView.builder.html函数的文档,您会发现有一点说明,在Python 3.2中默认使用其他版本。

  

使用版本2(默认值)时,str,bytes或bytearray对象将转换为int并使用其所有位。

     

对于版本1(用于从旧版本的Python中复制随机序列提供),用于str和bytes的算法生成的种子范围更窄。

这似乎足以回答屏幕截图与案例之间的不同顺序这一事实。