不同的结果来自python的选择和选择?

时间:2020-10-05 21:40:41

标签: python

我会怀疑以下代码会返回可比较的结果:

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的选择。

1 个答案:

答案 0 :(得分:4)

请参见documentation

对于给定的种子,具有相同权重的choices()函数通常会产生与重复调用choice()不同的序列。 choices()使用的算法使用浮点算法来提高内部一致性和速度。 choice()使用的算法默认为带有重复选择的整数算术,以避免舍入误差产生小的偏差。

相关问题