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 = [ 'a', 'b', 'c', 'd', 'e', '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]