python中的choice和choices的结果不同?

python中的choice和choices的结果不同?,python,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

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

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

请参阅:

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

见:

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


嗯,这个选择预计是随机的。即使是对random.choices的两个后续调用也会返回不同的结果。当然,选择应该是随机的。即使是对random.choices的两个后续调用也会返回不同的结果,这暗示着choice和choices不使用相同的算法,在循环中使用一个并不等同于使用k参数调用另一个。谢谢,我不确定是这样,1000%的人认为,如果对选项调用k=1,它们在功能上是等价的。这暗示着选项和选项不使用相同的算法,在循环中使用一个并不等同于使用k参数调用另一个。谢谢,我不确定情况是否如此,1000%的人认为,如果在选择中调用k=1,它们在功能上是等价的。