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

  ⇑


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

  ⇑