Выбранные функции из модуля random: продолжение
Предыдущие функции имеют один важный недостаток - они могут создавать повторяющиеся значения, даже если число последующих вызовов не превышает ширину указанного диапазона.
Посмотрите на код в ниже. Скорее всего, программа выводит набор чисел, в котором некоторые элементы не являются уникальными.
from random import randint
for i in range(10):
print(randint(1, 10), end=',')
Вот что мы получили в одном из запусков:
9,4,5,4,5,8,9,4,8,4,
sample output
Функции choice и sample
Как видите, это не очень хороший инструмент для генерирования чисел в лотерее. К счастью, есть лучшее решение, чем написание собственного кода для проверки уникальности "нарисованных" чисел.
Эта функция названа очень многообещающе - choice
:
choice(sequence);
sample(sequence, elements_to_choose=1).
Первый вариант выбирает "случайный" элемент из входной последовательности и возвращает его.
Второй создает список (образец), состоящий из элемента elements_to_choose
(по умолчанию 1
), "извлеченного" из входной последовательности.
Другими словами, функция выбирает некоторые элементы ввода, возвращая список с выбором. Элементы в образце расположены в случайном порядке. Примечание: elements_to_choose
не должно превышать длину входной последовательности.
Посмотрите на код ниже:
from random import choice, sample
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(choice(lst))
print(sample(lst, 5))
print(sample(lst, 10))
Теперь вывод программы непредсказуем. Наши результаты выглядели так:
4
[3, 1, 8, 9, 10]
[10, 8, 5, 1, 6, 4, 3, 9, 7, 2]
output