В этом разделе представлены функции для получения случайных чисел из вероятностных распределений.
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=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