Sha*_*hin 41
你可以使用random.sample:
>>> random.sample(xrange(1,50), 6)
[26, 39, 36, 46, 37, 1]
Run Code Online (Sandbox Code Playgroud)
"工作表建议显示每个数字并将其设置为零,但我不知道这会有什么帮助."
假设这是一项任务,您需要自己实施抽样,您可以看看如何random.sample实施.它确实提供了丰富的信息,但可能因您的需求而过于复杂,因为代码还可确保所有子切片也是有效的随机样本.为了提高效率,它还根据人口规模使用不同的方法.
至于工作表,我认为它假设您从1到49的数字列表开始,并建议您用0替换您选择的数字,以便重新选择时可以跳过.这里有一些伪代码可以帮助您入门:
population = range(1, 50) # list of numbers from 1 to 49
sample = []
until we get 6 samples:
index = a random number from 0 to 48 # look up random.randint()
if population[index] is not 0: # if we found an unmarked value
append population[index] to sample
set population[index] = 0 # mark selected
如果您希望尝试不同的方法,还有许多其他方法需要考虑,例如随机化列表然后截断,或某种形式的油藏采样.
祝你的任务顺利.
E.Z*_*.Z. 13
A set不会保留任何重复:
s = set()
while len(s) < 6:
s.add(get_my_new_random_number())
Run Code Online (Sandbox Code Playgroud)