如何从 Python 的集合中随机选择可重复的

How to make random choose from a set in Python reproducible

我在这里写了一个简单的示例代码。事实上,在我的程序中,每次迭代都会从集合中添加或删除元素,并且会从集合中选择一个随机元素。

但即使我 运行 下面的简化代码,我每次 运行 代码时都会得到不同的输出。那么,如何使输出可重现?

import random
random.seed(0)
x = set()
for i in range(40):
    x.add('a'+str(i))
print(random.sample(x, 1))

问题在于集合的元素是无序的,并且即使随机样本选择相同的东西也会在运行之间发生变化。从python 3.9开始,在集合上使用random.sample实际上是deprecated,将来您将需要输入一个序列。

您可以通过以一致的顺序将集合转换为序列来做到这一点,例如

x = sorted(x)

或者可能更好,首先使用像 list 这样的类型(在您的示例中总是生成 ['a24'])。

x = ['a' + str(i) for i in range(40)]