Module (33%)
Section (47%)

Выбранные функции из модуля 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



Code

{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×