from random import sample
# Choose 50 random values from 0 to 99
values = sample(range(100), k = 50)
# Your execution loop
for i in range(50):
print(values[i])
# Function that creates a generator that will yield sampled values one at a time
def create_non_replacement_sample(inputs, k):
values = sample(inputs, k)
def inner():
for v in values:
yield v
return inner
# Create the generator to sample 50 values between 0 and 99
sampler = create_non_replacement_sample(range(100), 50)
# Execution loop
for i in range(50):
# Get a random value without replacement
value = next(sampler())
# Print the value
print(value)
2条答案
按热度按时间41zrol4v1#
我们要做的事情非常简单,可以使用
range
创建一个这样的整数列表,然后使用sample
请求随机值而不进行替换:请注意,提前采样非常重要,因为
sample
不会修改发送给它的值列表,所以后续调用不能保证不替换。如果你真的想创建一个可以调用的函数,你可以使用生成器来使它工作:
这是通过提前生成值,然后返回一个函数,一个接一个地返回这些值来实现的。然后,在执行循环中,您可以调用
next
来从结果集中获取一个随机值。注意,这里,每次调用next
实际上都会递增到列表中的下一个值,因此只有在需要新值时才应该调用next
。knpiaxh12#