Модуль random
в Python
Модуль random
в Python предоставляет функции для генерации случайных чисел и осуществления операций случайного выбора. Он широко используется в задачах, связанных с случайностью, таких как симуляции, игры, тестирование и другие области, где требуется случайное поведение.
Импорт модуля
Чтобы использовать функции модуля random
, необходимо его импортировать:
import random
Основные функции модуля random
random()
Возвращает случайное число с плавающей точкой в диапазоне от0.0
до1.0
(не включая1.0
).import random number = random.random() print(number) # Вывод: например, 0.37444887175646646
randint(a, b)
Возвращает случайное целое числоN
такое, чтоa <= N <= b
.import random number = random.randint(1, 10) print(number) # Вывод: целое число от 1 до 10 включительно
uniform(a, b)
Возвращает случайное число с плавающей точкой в диапазоне отa
доb
.import random number = random.uniform(1.5, 5.5) print(number) # Вывод: число с плавающей точкой между 1.5 и 5.5
randrange(start, stop[, step])
Возвращает случайное целое число из заданного диапазона, аналогично функцииrange()
.import random number = random.randrange(0, 101, 5) print(number) # Вывод: случайное число от 0 до 100 с шагом 5 (например, 0, 5, 10, ..., 100)
choice(seq)
Возвращает случайный элемент из последовательностиseq
.import random fruits = ['яблоко', 'банан', 'вишня'] fruit = random.choice(fruits) print(fruit) # Вывод: один из фруктов в списке
choices(population, weights=None, k=1)
Возвращает список длиныk
из элементовpopulation
, выбранных с заменой. Можно указать веса вероятностей.import random colors = ['красный', 'синий', 'зелёный'] selected_colors = random.choices(colors, weights=[10, 5, 1], k=5) print(selected_colors) # Вывод: список из 5 цветов с учётом весов
sample(population, k)
Возвращает список длиныk
из уникальных элементовpopulation
, выбранных без замены.import random numbers = list(range(1, 50)) selected_numbers = random.sample(numbers, 6) print(selected_numbers) # Вывод: список из 6 уникальных чисел
shuffle(x[, random])
Перемешивает последовательностьx
на месте.import random cards = ['туз', 'король', 'дама', 'валет'] random.shuffle(cards) print(cards) # Вывод: перемешанный список карт
Установка начального значения генератора случайных чисел
Для воспроизводимости результатов можно установить начальное значение генератора случайных чисел с помощью функции seed()
.
import random
random.seed(42)
print(random.random())
# Вывод: всегда будет одинаковым при одном и том же seed
Генерация случайных чисел из распределений
Модуль random
также предоставляет функции для генерации случайных чисел из различных статистических распределений:
gauss(mu, sigma)
: Нормальное (гауссово) распределение.expovariate(lambd)
: Экспоненциальное распределение.betavariate(alpha, beta)
: Бета-распределение.gammavariate(alpha, beta)
: Гамма-распределение.triangular(low, high, mode)
: Треугольное распределение.
Пример использования нормального распределения:
import random
value = random.gauss(0, 1)
print(value)
# Вывод: случайное число с нормальным распределением (среднее=0, стандартное отклонение=1)
Практические примеры
- Симуляция подбрасывания монеты:
import random result = random.choice(['Орел', 'Решка']) print(result) # Вывод: 'Орел' или 'Решка'
- Генерация случайного пароля:
import random import string password_characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(password_characters) for i in range(12)) print(password) # Вывод: случайная строка из 12 символов
- Случайный выбор элемента из списка с вероятностями:
import random options = ['приз', 'ничего', 'попробуйте снова'] weights = [1, 5, 4] result = random.choices(options, weights=weights, k=1) print(result[0]) # Вывод: 'приз', 'ничего' или 'попробуйте снова' с заданными вероятностями
Замечания
- Модуль
random
не предназначен для криптографически безопасных генераций случайных чисел. Для этих целей используйте модульsecrets
. - Функции модуля
random
работают на основе алгоритма Mersenne Twister, который обеспечивает хорошее статистическое качество случайных чисел. - Если требуется воспроизводимость результатов (например, для тестирования), используйте функцию
seed()
с фиксированным значением.
Заключение
Модуль random
предоставляет богатый набор функций для работы со случайностью в Python. Он позволяет легко генерировать случайные числа, выбирать случайные элементы из последовательностей, перемешивать данные и работать с различными статистическими распределениями. Понимание возможностей этого модуля расширит ваши навыки программирования и откроет новые возможности в разработке приложений.
Если у вас есть дополнительные вопросы или требуется помощь с другими аспектами Python, пожалуйста, обращайтесь!