首页 > 解决方案 > 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 的选择如何。

标签: python

解决方案


请参阅文档

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


推荐阅读