Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Модуль random Основы Python

Python знаменит тем, что в нем доступно большое количество стандартных библиотек — так называют модули и пакеты, в которых уже реализованы тысячи разных функций. Разработчику полезно разбираться в этих стандартных библиотеках, ведь это знание позволяет экономить время и силы.

В этом уроке мы познакомимся с одной из стандартных библиотек — модулем random.

Модуль random

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

  • randint — сгенерировать целое число в заданном диапазоне
  • choice — выбрать случайный элемент из заданного набора

Генерация случайных чисел

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

from random import randint

Для примера попробуем сгенерировать число от 1 до 100:

random_number = randint(1, 100)

Обратите внимание, что обе границы диапазона включены — значит, randint может выдать любое значение в диапазоне, в том числе 1 и 100.

Перейдем к более сложному примеру:

string = 'abcde'
random_index = randint(0, len(string) - 1)
char = string[random_index]

Здесь программа должна выбрать случайный символ из строки string. При этом:

  • Строка в переменной string имеет длину 5
  • Индекс последнего элемента в строке равен 4
  • Символы строки индексируются с нуля

Если мы попробуем сгенерировать число через randint(0, 5), то в какой-то момент получим значение 5. Тогда программа выдаст ошибку IndexError: она не сможет выдать пятый символ из четырех.

Как это предотвратить? Нужно не просто задать верхнюю границу диапазона, а вычислить ее — то есть вычесть единицу из длины строки. Именно так и сделано в примере кода выше.

Выбор случайного элемента

Выше мы рассмотрели пример, в котором выбирался случайный символ строки. Эта задача возникает достаточно часто, поэтому в модуле random существует функция choice.

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

from random import choice

string = 'abcde'
char = choice(string)

Используя choice, не нужно думать о границах диапазона — функция сама определяет, как правильно выбирать элементы. При этом важно, чтобы строка для выбора не была пустой. Иначе мы получим ошибку IndexError: Cannot choose from an empty sequence: «Нельзя выбрать из пустой строки».

Случайна ли случайность?

В основе модуля random лежит генератор псевдослучайных чисел — на самом деле, число выбирается не случайно, а на основе сложных математических вычислений. Из-за этого random не принято использовать в сферах, где нужна повышенная безопасность.

В криптографии, шифровании и других подобных сферах используют модуль secrets, в основе которого менее предсказуемый механизм случайной генерации.

Дополнительные ссылки


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
16 марта 8 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»