Модуль random предоставляет функции для генерации псевдослучайных чисел, выбора случайных элементов из последовательности, перемешивания последовательностей и других операций, связанных со случайностью.
При этом важно понимать, что генерация чисел в этом модуле является псевдослучайной, то есть они не являются истинно случайными. Они генерируются алгоритмически, и при заданных начальных условиях (начальном значении, или seed
) последовательность чисел будет повторяться.
На самом деле, модуль random
является частью стандартной библиотеки Python, так что вам не нужно устанавливать его отдельно.
Чтобы начать работать с модулем, вы просто импортируете его:
import random
После этого все функции и методы модуля становятся доступными для использования в вашем коде.
random()
- возвращает следующее случайное вещественное число в диапазоне от 0.0 до 1.0 (не включая 1).print(random.random())
randint(a, b)
- генерирует случайное целое число в диапазоне от a
до b
включительно.print(random.randint(1, 10))
randrange(start, stop, step)
- возвращает случайное целое число в диапазоне от start
до stop
(не включая stop
) с заданным шагом step
.print(random.randrange(10)) # число от 0 до 9
print(random.randrange(5, 50, 5)) # число из [5, 10, 15, ... 45]
uniform(a, b)
- возвращает случайное вещественное число между a
и b
.print(random.uniform(1.5, 2.5))
Рассмотрим основные функции модуля, которые позволяют манипулировать и выбирать случайные элементы из последовательностей.
choice(seq)
- эта функция возвращает случайный элемент из предоставленной последовательности.fruits = ["яблоко", "банан", "черешня", "дыня"]
print(random.choice(fruits))
choices(population, weights=None, *, cum_weights=None, k=1)
- возвращает список из k
элементов, выбранных случайным образом из population
. Параметр weights
указывает вероятности выбора каждого элемента из population
..fruits = ["яблоко", "банан", "черешня", "дыня"]
print(random.choices(fruits, k=2))
print(random.choices(fruits, weights=[10, 1, 1, 1], k=2))
shuffle(seq)
- перемешивает элементы последовательности на месте. Обратите внимание, что эта функция возвращает None
и изменяет исходный список.numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)
sample(population, k)
- возвращает список длиной k
из уникальных элементов, случайно выбранных из population
.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(random.sample(numbers, 5))
Модуль random в Python не только предоставляет базовые функции для генерации случайных чисел, но также содержит функции для генерации чисел, следующих определенным статистическим распределениям. Эти функции могут быть особенно полезными для статистиков, ученых и разработчиков, работающих в области моделирования и анализа данных.
gauss(mu, sigma)
- генерирует случайное число, следующее нормальному (гауссовому) распределению с математическим ожиданием mu
и стандартным отклонением sigma
.print(random.gauss(0, 1)) # Нормальное распределение со средним 0 и стандартным отклонением 1
betavariate(alpha, beta)
- генерирует случайное число, следующее бета-распределению с параметрами alpha
и beta
.print(random.betavariate(2, 5))
expovariate(lambd)
- генерирует случайное число, следующее экспоненциальному распределению, где lambd
равен 1 деленное на математическое ожидание.print(random.expovariate(1/5)) # Математическое ожидание равно 5
gammavariate(alpha, beta)
- генерирует случайное число, следующее гамма-распределению с параметрами alpha
и beta
.print(random.gammavariate(1, 1))
paretovariate(alpha)
- генерирует случайное число, следующее распределению Парето.print(random.paretovariate(5))
weibullvariate(alpha, beta)
- генерирует случайное число, следующее распределению Вейбулла.print(random.weibullvariate(1, 1))
Модуль random Python генерирует псевдослучайные числа, а не истинные случайные числа. Псевдослучайные числа генерируются алгоритмически и будут повторяться в идентичной последовательности при заданном начальном значении (seed). Сейчас мы рассмотрим, что такое "seeding" и как это работает в контексте модуля random.
"Seed" или начальное значение — это число (или вектор чисел), который инициализирует генератор псевдослучайных чисел. Если генератор случайных чисел инициализирован одним и тем же начальным значением, он будет возвращать одну и ту же последовательность чисел.
Использование начального значения полезно в различных ситуациях, таких как:
Модуль random предоставляет функцию seed()
, которая позволяет устанавливать начальное значение.
import random
random.seed(10)
print(random.random()) # 0.5714025946899135
random.seed(10)
print(random.random()) # 0.5714025946899135
Обратите внимание, что при двух последовательных вызовах функции random.random()
после установки одного и того же начального значения результаты были идентичными.
Если seed()
вызывается без аргумента или с None в качестве аргумента, он будет использовать текущее время для инициализации генератора, что делает поведение случайным.
Модуль random в Python предоставляет обширный набор инструментов для работы с псевдослучайными числами. От базовой генерации случайных чисел и манипуляций с последовательностями до продвинутых статистических распределений — этот модуль предлагает функции для многих сценариев использования.
Содержание: