python random中的选择和选择的结果不同?

我怀疑以下代码会返回类似的结果:


import random


random.seed(765)

x = random.choices(range(34), k=100)


random.seed(765)

y = [random.choice(range(34)) for _ in range(100)]

但当我们比较时


>>> x[:5]

[1, 8, 9, 31, 29]

>>> y[:5]

[2, 30, 15, 26, 17]

显然x不等于y.


我怀疑我遗漏了一些明显的东西,但假设种子设置的序列将返回相同的 100 个值,无论选择与 k = 100 的选择如何。


Qyouu
浏览 51回答 1
1回答

不负相思意

请参阅文档:对于给定的种子, choices() 具有相同权重的函数通常会生成与重复调用不同的序列 choice()。使用的算法 choices() 使用浮点运算来实现内部一致性和速度。默认情况下使用的算法 choice() 采用重复选择的整数运算,以避免舍入误差造成的小偏差。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python