Ответ 1
Вы можете использовать random.sample
:
>>> random.sample(xrange(1,50), 6)
[26, 39, 36, 46, 37, 1]
"Рабочий лист рекомендует отображать каждый номер и устанавливать его на ноль, но я не вижу, как это поможет".
Предполагая, что это назначение, и вам нужно реализовать выборку самостоятельно, вы можете посмотреть, как 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
Если вы хотите попробовать что-то другое, существует много других подходов к рассмотрению, например. рандомизация списка, затем усечение, или некоторая форма выборки коллектора.
Удачи с вашим заданием.