Сообщить об ошибке.

Вероятностные распределения в модуле random Python

Случайные числа из вероятностных распределений

В этом разделе представлены функции для получения случайных чисел из вероятностных распределений.

Содержание:


random.triangular(low, high, mode):

Функция random.triangular() возвращает случайное вещественное число из треугольного вероятностного распределения.

По умолчанию, минимальное low и максимальное high значения, левый и правый угол, равны 0 и 1, а координата вершины mode находится по середине, т.е. равна 0.5:

>>> import random
>>> random.triangular()
0.5489339773275408
>>> [round(random.triangular(), 2) for i in range(10)]
[0.92, 0.44, 0.47, 0.54, 0.25, 0.63, 0.75, 0.21, 0.31, 0.41]

Параметры распределения могут быть установлены в необходимые значения:

>>> for i in range(10):
...     x = random.triangular(low = 10, high = 100, mode = 95)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 96.06, 93.37, 68.12, 44.23, 90.94, 82.6, 72.86, 42.21, 56.09, 80.45

random.betavariate(alpha, beta):

Функция random.betavariate() возвращает случайное вещественное число из бета-распределения.

Аргументы alpha и beta должны быть указаны обязательно, так как не имеют значений по умолчанию, и должны быть строго больше 0:

>>> import random
>>> random.betavariate(alpha = 1, beta = 2.2)
# 0.08076061812597142
>>> for i in range(10):
...     x = random.betavariate(alpha = 1, beta = 2.2)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 0.27, 0.13, 0.22, 0.17, 0.18, 0.05, 0.29, 0.63, 0.17, 0.51

random.expovariate(lambd=1.0):

Изменено в Python 3.12: добавлено значение по умолчанию для lambd.

Функция random.expovariate() возвращает случайное вещественное число из экспоненциального (показательного) распределения. Аргумент lambd - это 1.0, деленное на желаемое среднее значение. Он должен быть отличным от нуля. (По хорошему lambd должен называться lambda, но это зарезервированное слово языка Python)

Возвращаемые значения варьируются от 0 до положительной бесконечности, если lambd положительна, и от отрицательной бесконечности до 0, если лямбда отрицательна.

>>> import random
>>> random.expovariate(lambd = 1.5)
0.14022082480343487
>>> for i in range(10):
...     x = random.expovariate(lambd = 1.5)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 0.09, 1.31, 0.95, 1.51, 0.42, 0.99, 1.32, 0.87, 0.49, 0.14

random.gammavariate(alpha, beta):

Функция random.gammavariate() возвращает случайное вещественное число из гамма-распределения.Параметры alpha и beta должны быть обязательно указаны, так как не имеют значений по умолчанию, и должны быть строго больше 0:

>>> import random
>>> random.gammavariate(alpha = 9, beta = 0.5)
# 2.861976870588965
>>> for i in range(10):
...     x = random.gammavariate(alpha = 9, beta = 0.5)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 7.42, 5.55, 6.17, 2.38, 3.2, 4.79, 4.85, 6.37, 4.52, 4.26

random.gauss(mu, sigma):

Функция random.gauss() возвращает случайное вещественное число из распределения Гауса. По сути, выполняет то же самое что и random.normalvariate(), но немного быстрее:

>>> import random
>>> random.gauss(mu = 0, sigma = 0.2)
# 0.21818525063404515

random.normalvariate(mu, sigma):

Функция random.normalvariate() возвращает случайное вещественное число из нормального распределения.

>>> import random
>>> random.normalvariate(mu = -1, sigma = -1)
# -0.7055427988874806
>>> for i in range(10):
...     x = random.normalvariate(mu = 0, sigma = 1)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 1.42, 0.42, -0.46, -1.11, -0.38, -1.18, 1.97, -2.33, 2.06, 0.12

random.lognormvariate(mu, sigma):

Функция random.lognormvariate() возвращает случайное вещественное число из логнормального распределения.Аргумент mu - может быть любым, а вот sigma - должна быть строго больше 0.

>>> import random
>>> random.lognormvariate(mu = 0, sigma = 1)
# 1.0486383657788385
>>> for i in range(10):
...     x = random.lognormvariate(mu = 0, sigma = 1)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 0.71, 0.67, 1.87, 0.96, 12.43, 2.02, 1.11, 0.33, 0.17, 1.59

random.vonmisesvariate(mu, kappa):

Функция random.vonmisesvariate() возвращает случайный угол из интервала [0, 2*pi] значение которого подчиняется закону распределения фон Мизеса. Аргумент mu - средний угол выраженный в радианах из интервала [0, 2*pi], kappa должен быть больше либо равен 0.

>>> import random
>>> random.vonmisesvariate(3.14, 1)
# 2.201702941836471
>>> for i in range(10):
...     x = random.vonmisesvariate(3.14, 1)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 2.83, 2.02, 2.62, 3.73, 3.0, 4.63, 1.45, 2.4, 4.62, 2.64

random.paretovariate(alpha):

Функция random.paretovariate() возвращает случайное вещественное число из распределения Парето.

>>> import random
>>> random.paretovariate(1)
# 4.953639576457526
>>> for i in range(10):
...     x = random.paretovariate(1)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 1.04, 3.9, 1.74, 1.24, 1.4, 14.35, 1.84, 4.01, 3.15, 1.15

random.weibullvariate(alpha, beta):

Функция random.weibullvariate() возвращает случайное вещественное число из распределения Вейбулла.

>>> import random
>>> random.weibullvariate(1, 1.5)
# 0.8977693128589646
>>> for i in range(10):
...     x = random.weibullvariate(1, 1.5)
...     x = round(x, 2)
...     print(x, end = ', ')
... 
# 0.02, 1.56, 0.7, 0.55, 0.64, 0.31, 0.53, 0.99, 0.35, 1.35