Модуль random

Модуль random в Python

Модуль random в Python предоставляет функции для генерации случайных чисел и осуществления операций случайного выбора. Он широко используется в задачах, связанных с случайностью, таких как симуляции, игры, тестирование и другие области, где требуется случайное поведение.

Импорт модуля

Чтобы использовать функции модуля random, необходимо его импортировать:

import random

Основные функции модуля random

  1. random()Возвращает случайное число с плавающей точкой в диапазоне от 0.0 до 1.0 (не включая 1.0).
    import random
    
    number = random.random()
    print(number)
    # Вывод: например, 0.37444887175646646
  2. randint(a, b)Возвращает случайное целое число N такое, что a <= N <= b.
    import random
    
    number = random.randint(1, 10)
    print(number)
    # Вывод: целое число от 1 до 10 включительно
  3. uniform(a, b)Возвращает случайное число с плавающей точкой в диапазоне от a до b.
    import random
    
    number = random.uniform(1.5, 5.5)
    print(number)
    # Вывод: число с плавающей точкой между 1.5 и 5.5
  4. randrange(start, stop[, step])Возвращает случайное целое число из заданного диапазона, аналогично функции range().
    import random
    
    number = random.randrange(0, 101, 5)
    print(number)
    # Вывод: случайное число от 0 до 100 с шагом 5 (например, 0, 5, 10, ..., 100)
  5. choice(seq)Возвращает случайный элемент из последовательности seq.
    import random
    
    fruits = ['яблоко', 'банан', 'вишня']
    fruit = random.choice(fruits)
    print(fruit)
    # Вывод: один из фруктов в списке
  6. 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 цветов с учётом весов
  7. sample(population, k)Возвращает список длины k из уникальных элементов population, выбранных без замены.
    import random
    
    numbers = list(range(1, 50))
    selected_numbers = random.sample(numbers, 6)
    print(selected_numbers)
    # Вывод: список из 6 уникальных чисел
  8. 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)

Практические примеры

  1. Симуляция подбрасывания монеты:
    import random
    
    result = random.choice(['Орел', 'Решка'])
    print(result)
    # Вывод: 'Орел' или 'Решка'
  2. Генерация случайного пароля:
    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 символов
  3. Случайный выбор элемента из списка с вероятностями:
    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, пожалуйста, обращайтесь!

Оцените статью