如何从 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)]
我在这里写了一个简单的示例代码。事实上,在我的程序中,每次迭代都会从集合中添加或删除元素,并且会从集合中选择一个随机元素。
但即使我 运行 下面的简化代码,我每次 运行 代码时都会得到不同的输出。那么,如何使输出可重现?
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)]