Python. Функции генерирования случайных чисел с плавающей запятой.




Модуль random. Функции генерирования случайных чисел с плавающей запятой. Функции получения случайных чисел с использованием распределений


Содержание


Поиск на других ресурсах:

1. Функция random.random(). Получить случайное число в диапазоне [0; 1]

Функция random.random() используется для получения случайного числа в диапазоне [0; 1].

Пример.

# Функция random.random()
# подключить модуль random
import random

rnd_num = random.random() # rnd_num = 0.445307972457864

 

2. Функция random.uniform(). Получить случайное число в заданном интервале

Функция random.uniform() возвращает случайное число с плавающей запятой в заданном интервале. Общая форма функции следующая

random.uniform(a, b)

где a, b – значения задающие интервал, в пределах которого будет получено результирующее случайное число.
Значение конечной точки b определяется по формуле

a+(b-a)*random()

Поэтому принадлежность конечной точки b заданному диапазону зависит от округления этого значения для типа с плавающей запятой.

Относительно значений a, b возможны два случая:

  • a<=b. В этом случае случайное число N получается таким, что удовлетворяет условию a<=N<=b;
  • b<a. В этом случае получается случайное число N, которое удовлетворяет условию b<=N<=a.

Пример.

# Функция random.uniform()
# подключить модуль random
import random

# Случай 1. a<=b
# получить случайное число в пределах [1.5, 2.7]
a = 1.5 # нижняя граница
b = 2.7 # верхняя граница
number = random.uniform(a, b) # number = 1.5904468975189021

# получить случайное число в пределах [2.8, 3.3]
number = random.uniform(2.8, 3.3) # number = 2.8056183689090615

# Случай 2. a>b
# получить случайное число в пределах [2.7, 1.5]
a = 2.7
b = 1.5
number = random.uniform(2.7, 1.5) # number = 2.492950266273217

# Случай 3. Отрицательные числа
a = -5.2
b = -3.8
number = random.uniform(b, a) # nbumber = -3.8546817374025304

 

3. Функция random.triangular(). Получить случайное число в заданном интервале и заданном режиме

Функция random.triangular() возвращает случайное число с плавающей запятой. Согласно документации Python общая форма функции следующая

random.triangular(low, high, mode)

где

  • low – минимально-возможное значение результирующего случайного числа (нижняя граница). По умолчанию значение low равно нулю;
  • high – максимально-возможное значение результирующего случайного числа (верхняя граница). По умолчанию значение high равно единице;
  • mode – аргумент, задающий режим вывода числового значения. По умолчанию mode есть серединой между аргументами low и high.

Пример.

# Функция random.triangular
# подключить модуль random
import random

l = 1.5
h = 2.2

number = random.triangular(l,h) # number = 1.8082365488322254
number = random.triangular(-3.5, -6.2, 1) # number = -4.23510440860435


 

4. Функция random.betavariate(). Получить случайное число в пределах [0; 1] на основании бета-распределения

Функция random.betavariate() возвращает случайное число в пределах [0; 1] на основании бета-распределения (beta distribution). Общая форма функции

random.betavariate(alpha, beta)

где

  • alpha, beta – параметры, для которых выполняется условие alpha>0, beta>0. Возвращаемое значение находится в пределах 0 и 1. Если не соблюсти одно из условий alpha>0 или beta>0, то интерпретатор выдаст ошибку.

Пример.

# Функция random.betavariate
# подключить модуль random
import random

alpha = 7
beta = 9.5
number = random.betavariate(alpha, beta) # number = 0.22875540655977067

alpha = 3.0
beta = 1.5
number = random.betavariate(alpha, beta) # number = 0.6977893966563389

alpha = 0.1
beta = 0.1
number = random.betavariate(alpha, beta) # number = 0.0008738538852347506

 

5. Функция random.expovariate(). Получить случайное число на основе экспоненциального распределения

Функция random.expovariate() возвращает случайное значение на основе экспоненциального распределения (exponential distribution). Согласно документации Python, общая форма функции следующая

random.expovariate(lambda)

где lambda – параметр, который равен результату деления 1.0 на желаемое среднее значение. Параметр lambda может быть ненулевым (lambda≠0). Не следует путать параметр lambda с одноименным зарезервированным словом языка Python.

Случайное значение, которое возвращает функция, может быть:

  • от 0 до +∞, если выполняется условие lambda>0;
  • от -∞ до 0, если lambda<0.

Пример.

# Функция random.expovariate(lambd)

# подключить модуль random
import random

# Случай 1. lambd>0
lambd = 5
rnd_num = random.expovariate(lambd) # rnd_num = 0.6234234901590993

# Случай 2. lambd<0
lambd = -8.2
rnd_num = random.expovariate(lambd) # rnd_num = -0.41089244332230856

 

6. Функция random.gammavariate(). Получить случайное число на основе Гамма-распределения

Функция random.gammavariate() возвращает случайное число на основе Гамма-распределения. Общая форма объявления функции

random.gammavariate(alpha, beta)

где alpha, beta – параметры распределения для которых выполняются условия alpha>0, beta>0. Результирующая функция распределения вероятностей рассчитывается по формуле:

Python. Гамма-распределение. Функция random.gammavariate()

В вышеприведенной формуле используются две функции из библиотеки Python:

  • функция math.exp(–x/beta) – вычисляет экспоненту;
  • функция math.gamma(alpha) – вычисляет гамма-функцию.

Функцию random.gammavariate() не нужно путать с гамма-функцией.

Пример.

# Функция random.gammavariate(alpha,beta)

# подключить модуль random
import random

alpha = 2.0
beta = 4.5
rnd_num = random.gammavariate(alpha, beta) # rnd_num = 5.046693970249287

alpha = 3.0
beta = 1.1
rnd_num = random.gammavariate(alpha, beta) # rnd_num = 5.797395009650084

 

7. Функция random.gauss(). Получить случайное число на основе распределения Гаусса

Функция random.gauss() возвращает случайное число на основе распределения Гаусса. Согласно документации Python общая форма функции следующая:

random.gauss(mu, sigma)

где

  • mu – параметр, определяющий среднее значение;
  • sigma – параметр, который определяет стандартное отклонение.

По сравнению с подобной функцией random.normalvariate() данная функция работает быстрее.

Пример.

# Функция random.gauss()

# подключить модуль random
import random

# Диапазон [1-0.5; 1+0.5]
mu = 1.0
sigma = 0.5
rnd_num = random.gauss(mu, sigma) # rnd_num = 1.0460662110757315

# Диапазон [250-0.3; 250+0.3]
mu = 250
sigma = 0.3
rnd_num = random.gauss(mu, sigma) # rnd_num = 250.09858114288903

 

8. Функция random.lognormvariate(). Получить случайное число на основе логарифмического нормального распределения

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

random.lognormvariate(mu, sigma)

где

  • mu – среднее значение;
  • sigma – стандартное отклонение. Значение sigma может быть больше нуля.

Если из полученного случайного числа взять натуральный логарифм, то будет получено нормальное распределение.

Пример.

# Функция random.lognormvariate()

# подключить модуль random
import random

# подключить модуль math
import math

# Диапазон [3-0.5; 3+0.5]
mu = 3.0
sigma = 0.5
rnd_num = random.lognormvariate(mu, sigma)
number = math.log(rnd_num) # диапазон [3-0.5; 3+0.5]

print("rnd_num = ", rnd_num)
print("log(rnd_num) = ", number)

Результат работы программы

rnd_num = 13.614067024574224
log(rnd_num) = 2.6111035982231474

 

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

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

random.normalvariate(mu, sigma)

где

  • mu – среднее значение;
  • sigma – стандартное отклонение.

Пример.

# Функция random.normalvariate()

# подключить модуль random
import random

mu = 10.0
sigma = 2.0
rnd_num = random.normalvariate(mu, sigma) # rnd_num = 11.529818975017623

 

10. Функция random.vonmisesvariate(). Круговое распределение данных

Функция random.vonmisesvariate() возвращает случайное число на основе кругового распределения данных. Общая форма объявления функции следующая

random.vonmisesvariate(mu, kappa)

где

  • mu – средний угол, выраженный в радианах в границах [0; 2·π];
  • kappa – параметр концентрации. Значение kappa должно удовлетворять условию kappa≥0. Если kappa=0, то функция возвращает случайный угол в пределах [0; 2·π].

Пример.

# Функция random.vonmisesvariate()

# подключить модуль random
import random

mu = 10.0
kappa = 2.0
rnd_num = random.vonmisesvariate(mu, kappa) # rnd_num = 3.0806812333424087

mu = 1.0 # 1 радиан
kappa = 0
rnd_num = random.vonmisesvariate(mu, kappa) # rnd_num = 0.10073252837746509

 

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

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

random.paretovariate(alpha)

где alpha – параметр формы. Значение alpha должно быть ненулевым.

Пример.

# Функция random.paretovariate()

# подключить модуль random
import random

alpha = 2.3
rnd_num = random.paretovariate(alpha) # rnd_num = 1.1150245760736535

alpha = -2.3
rnd_num = random.paretovariate(alpha) # rnd_num = 0.08129209858766535

 

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

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

random.weibullvariate(alpha, beta)

где

  • alpha – параметр масштаба;
  • beta – параметр формы.

Пример.

# Функция random.weibullvariate()

# подключить модуль random
import random

alpha = 1.5
beta = 2.0
rnd_num = random.weibullvariate(alpha, beta) # rnd_num = 1.5819775812273797

alpha = 500
beta = 50
rnd_num = random.weibullvariate(alpha, beta) # rnd_num = 486.648957741605

 


Связанные темы