Python. Модуль random. Функции для последовательностей

Модуль random. Функции для последовательностей


Содержание


1. Функция random.choice(). Получить случайный элемент в последовательности

Функция random.choice() предназначена для получения случайного элемента из непустой последовательности. Общая форма функции

random.choice(sequence)

где sequence – некоторая непустая последовательность значений, которыми могут быть числа, строки и т.д.

Если задать пустую последовательность, то будет сгенерировано исключение IndexError, которое возникает когда индекс последовательности находится за пределами диапазона.

Пример. В примере формируются две последовательности. Первая последовательность – дни недели. Вторая последовательность – произвольные числа. В обоих случаях будет вызвана функция choice() для выбора случайного значения.

# Функция random.choice()
# подключить модуль random
import random

# 1. Сформировать последовательность строк
days = ('Sun', 'Mon', 'Tue', 'Wed', 'Thi', 'Fri', 'Sat')

# получить случайный элемент из последовательности
rand_day = random.choice(days)
print(rand_day)

# 2. Сформировать последовательность чисел
intNumbers = ( 2, 17, -11, -20, 33)

# получить случайный элемент из последовательности
randIntNumber = random.choice(intNumbers)
print(randIntNumber)

Каждый раз после запуска программы на выполнение будет случайно выбираться случайный элемент из последовательности. Один из случаев получения результата выполнения программы

Wed
-20

 

2. Функция random.choices(). Взять список элементов из популяции

Данная функция введена начиная с версии Python 3.6.

Функция random.choices(population, k) возвращает список элементов из набора population. Размер результирующего списка равен значению k.
Согласно документации Python общая форма функции следующая

random.choices(population, weights=None, *, cum_weights=None, k=1)

где

  • population – некоторая популяция (набор) элементов. Если значение population есть пустым, то возникает исключение IndexError;
  • k – количество элементов в результирующем списке, который получается из набора population;
  • weights – последовательность, которая задает относительные веса при выборе элементов из набора population. Перед выполнения выбора относительные веса weights конвертируются в совокупные веса cum_weights;
  • cum_weights – альтернативная последовательность к weights. Если задана последовательность cum_weights, то устанавливаются совокупные (cumulative) веса при выборе элементов из набора population. Например, относительные веса [ 1, 3, -2, 5 ] есть эквивалентные совокупным (cumulative weights) весам [ 1, 4, 2, 7 ].

Пример.

# Функция random.choices()
# подключить модуль random
import random

# сформировать некоторую последовательность (популяцию)
seq1 = [ 'а', 'b', 'с', 'd', 'е', 'f', 'g', 'h' ]

# из популяции seq1 образовать новые последовательности
seq2 = random.choices(seq1, [1, 1, 2, 1, 2, 3, 3, 3], k=6)
print('seq2 = ', seq2)

seq3 = random.choices(seq1, [5, 5, 5, 5, 5, 5, 5, 5], k=3)
print('seq3 = ', seq3)

seq4 = random.choices(seq1, [1, 1, 1, 1, 1, 1, 1, 1], k=3)
print('seq4 = ', seq4)

seq5 = random.choices(seq1, [1, 1, 1, 1, 1, 1, 1, 1], k=10)
print('seq5 = ', seq5)

Результат работы программы

seq2 = ['g', 'g', 'c', 'g', 'f', 'g']
seq3 = ['c', 'f', 'c']
seq4 = ['a', 'c', 'e']
seq5 = ['g', 'h', 'h', 'd', 'h', 'h', 'd', 'h', 'f', 'g']

 

3. Функция random.shuffle(). Изменить последовательность

Функция random.shuffle() применяется к последовательностям. Функция произвольно изменяет позиции элементов последовательности.

Общая форма вызова функции

random.shuffle(sequence[, random])

где sequence – некоторая последовательность, которая может содержать элементы разных типов.



Пример.

# Функция random.shuffle()
# подключить модуль random
import random

# 1. Сформировать последовательность целых чисел
arr = [ 2, 3, 4, 5 ]
print(arr)

# перемешать последовательность
random.shuffle(arr)
print(arr)

# 2. Сформировать последовательность вещественных чисел
arr2 = [ 1.8, -2.8, 3.5, 4.77, -11.2 ]
print(arr2) # вывести предыдущий вариант

# перемешать последовательность
random.shuffle(arr2)
print(arr2)

# 3. Сформировать последовательность элементов разных типов
sequence = [ 'abc', 0.223, 25, True]
print(sequence)

# перемешать элементы в последовательности
random.shuffle(sequence)
print(sequence)

Результат выполнения программы

[2, 3, 4, 5]
[2, 4, 5, 3]
[1.8, -2.8, 3.5, 4.77, -11.2]
[1.8, 4.77, -2.8, -11.2, 3.5]
['abc', 0.223, 25, True]
[0.223, True, 25, 'abc']

 

4. Функция random.sample(). Получить список

Функция random.sample() создает новую последовательность уникальных элементов заданного размера. Последовательность уникальных элементов выбирается из некоторого набора или популяции. Предыдущая последовательность не изменяется
Общая форма функции

random.sample(population, k)

где

  • population – некоторая популяция, служащая входными данными для формирования результирующей последовательности;
  • k – размер результирующей последовательности.

Пример.

# Функция random.sample()
# подключить модуль random
import random

# 1. Сформировать последовательность элементов
arr = [ 'a2', 3, '4', 5, False, 5, 5, 5 ]
print("arr = ", arr)

sample = random.sample(arr,3) # sample = [5, 'a2', '4']
print('random.sample(arr,3) = ', sample)

sample = random.sample(arr,6) # sample = [5, 5, 'a2', '4', 5, False]
print('random.sample(arr,6) = ', sample)

# 2. Последовательность чисел
numbers = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 10 чисел
sample = random.sample(numbers,10) # все элементы

print('numbers = ', numbers)
print('random.sample(numbers,10) = ', sample)

Результат выполнения программы

arr = ['a2', 3, '4', 5, False, 5, 5, 5]
random.sample(arr,3) = [5, 3, 'a2']
random.sample(arr,6) = [5, '4', 'a2', 5, 3, 5]
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random.sample(numbers,10) = [0, 6, 5, 3, 2, 7, 1, 8, 9, 4]

 


Связанные темы