我会怀疑以下代码会返回可比较的结果:
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的选择。
答案 0 :(得分:4)
请参见documentation:
对于给定的种子,具有相同权重的
choices()
函数通常会产生与重复调用choice()
不同的序列。choices()
使用的算法使用浮点算法来提高内部一致性和速度。choice()
使用的算法默认为带有重复选择的整数算术,以避免舍入误差产生小的偏差。