В этом разделе представлены функции для получения случайных чисел из вероятностных распределений.
random.triangular()
,random.betavariate()
,random.expovariate()
,random.gammavariate()
,random.gauss()
,random.normalvariate()
,random.lognormvariate()
,random.vonmisesvariate()
,random.paretovariate()
,random.weibullvariate()
,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)
:Функция random.expovariate()
возвращает случайное вещественное число из экспоненциального (показательного) распределения.
>>> 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
Параметр lambd
, по хорошему, должен называться lambda
, но это зарезервированное слово языка Python.
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