Модуль random. Функції генерування випадкових чисел з плаваючою комою. Функції отримання випадкових чисел з використанням розподілів
Зміст
- 1. Функція random.random(). Отримати випадкове число в діапазоні [0; 1]
- 2. Функція random.uniform(). Отримати випадкове число в заданому інтервалі
- 3. Функція random.triangular(). Отримати випадкове число в заданому інтервалі та заданого режиму
- 4. Функція random.betavariate(). Отримати випадкове число в межах [0; 1] на основі бета-розподілу
- 5. Функція random.expovariate(). Отримати випадкове число на основі експоненціального розподілу
- 6. Функція random.gammavariate(). Отримати випадкове число на основі Гамма-розподілу
- 7. Функція random.gauss(). Отримати випадкове число на основі розподілу Гауса
- 8. Функція random.lognormvariate(). Отримати випадкове число на основі логарифмічного нормального розподілу
- 9. Функція random.normalvariate(). Отримати випадкове число на основі нормального розподілу
- 10. Функція random.vonmisesvariate(). Круговий розподіл даних
- 11. Функція random.paretovariate(). Отримати випадкове число на основі розподілу Парето
- 12. Функція random.weibullvariate(). Отримати випадкове число на основі розподілу Вейбулла
- Зв’язані теми
Пошук на інших ресурсах:
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:
- функція 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
⇑
Зв’язані теми
- Генерування випадкових чисел. Класи Random, SystemRandom. Функції рахівництва. Функції для цілих чисел
- Функції для послідовностей
⇑