Випадкові числа можна генерувати за допомогою функцій random(), uniform(), randange() і randint() у модулі random стандартної бібліотеки Python.
Модуль random входить до стандартної бібліотеки, тому додаткової установки не потрібно. Звісно, вам потрібно його імпортувати.
Тут наведено наступну інформацію.
random.random()
(Число з плаваючою комою від 0,0 до 1,0)random.uniform()
(Будь-який діапазон чисел з плаваючою комою)- Генеруйте випадкові числа, які слідують за звичайним розподілом, розподілом Гаусса тощо.
random.randrange()
(Ціле число довільного діапазону та кроку)random.randint()
(Ціле число в будь-якому діапазоні)- Створення списку з випадковими числами як елементами
- Список випадкових чисел з плаваючою комою
- Список цілих випадкових чисел
- Ініціалізуйте генератор випадкових чисел (виправте початкове число випадкових чисел)
Перегляньте наступну статтю про те, як довільно витягувати або сортувати елементи списку.
- Пов’язані статті:Вибір випадкових елементів зі списку в Python за допомогою selection(), sample(), choices()
- random.random()(Число з плаваючою комою від 0,0 до 1,0)
- random.uniform()(Будь-який діапазон чисел з плаваючою комою)
- Генеруйте випадкові числа, які слідують за звичайним розподілом, розподілом Гаусса тощо.
- random.randrange()(Ціле число довільного діапазону та кроку)
- random.randint()(Ціле число в будь-якому діапазоні)
- Створення списку з випадковими числами як елементами
- Ініціалізуйте генератор випадкових чисел (виправте початкове число випадкових чисел)
random.random()(Число з плаваючою комою від 0,0 до 1,0)
Функція random() модуля random генерує випадкове число з плаваючою комою типу float від 0,0 до 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Будь-який діапазон чисел з плаваючою комою)
uniform(a, b)
Функції цього випадкового модуля генерують випадкові числа типу float з плаваючою комою в будь-якому з наступних діапазонів
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Два аргументи можуть бути як більшими, так і меншими; якщо вони рівні, вони, природно, повернуть лише це значення. Повертаним значенням завжди є float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Аргумент також можна вказати як float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Чи буде значення b включено в діапазон, залежить від наступного округлення, як задокументовано.a + (b-a) * random.random()
Чи знаходиться значення кінцевої точки b у діапазоні чи ні, залежить від округлення з плаваючою комою в наступному рівнянні
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Генеруйте випадкові числа, які слідують за звичайним розподілом, розподілом Гаусса тощо.
Наведені вище функції random() і uniform() генерують рівномірно розподілені випадкові числа, але є також функції для генерування чисел з плаваючою комою, які слідують за наступним розподілом.
- бета-розповсюдження:
random.betavariate()
- експоненційний розподіл:
random.expovariate()
- гамма-розподіл:
random.gammavariate()
- Гаусів розподіл:
random.gauss()
- логнормальний розподіл:
random.lognormvariate()
- нормальний розподіл:
random.normalvariate()
- Розповсюдження фон Мізеса:
random.vonmisesvariate()
- Розподіл Парето:
random.paretovariate()
- Розподіл Вейбулла:
random.weibullvariate()
Параметри кожного розподілу задаються аргументами. Подробиці дивіться в офіційній документації.
random.randrange()(Ціле число довільного діапазону та кроку)
randrange(start, stop, step)
Функція цього випадкового модуля повертає випадково вибраний елемент із наступних елементів.range(start, stop, step)
Як і у випадку з range(), аргументи start і step можна опустити. Якщо вони пропущені, start=0 і step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Крок аргументу можна налаштувати на створення парного чи непарного випадкового цілого чи випадкового цілого числа, кратного трьом.
Наприклад, якщо початок є парним і крок=2, лише парні цілі числа в діапазоні можна отримати випадковим чином.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Ціле число в будь-якому діапазоні)
randint(a, b)
Функція цього випадкового модуля повертає наступне випадкове ціле число int.a <= n <= b
randrange(a, b + 1)
Еквівалентно цьому; зауважте, що значення b також входить до діапазону.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Створення списку з випадковими числами як елементами
У цьому розділі ми пояснимо, як використовувати модуль random стандартної бібліотеки для створення списку з випадковими числами як елементами.
Список випадкових чисел із числами з плаваючою комою
Щоб створити список, елементи якого є випадковими числами з плаваючою комою, об’єднайте функції random() і uniform() із записом для розуміння списку.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
У наведеному вище прикладі використовується range(), але списки та кортежі також можливі для потрібної кількості елементів. Щоб дізнатися більше про розуміння списку, зверніться до наступної статті.
- Пов’язані статті:Використання нотації розуміння списку Python
Список цілих int випадкових чисел
Під час генерації списку, елементами якого є цілі випадкові числа, поєднання вищевказаних randange() і randint() з нотацією розуміння списку може призвести до повторюваних значень.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Якщо ви хочете створити випадкову послідовність цілих чисел без дублювання, витягніть елементи range() з довільним діапазоном за допомогою random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Для отримання додаткової інформації про random.sample() зверніться до наступної статті.
- Пов’язані статті:Вибір випадкових елементів зі списку в Python за допомогою selection(), sample(), choices()
Ініціалізуйте генератор випадкових чисел (виправте початкове число випадкових чисел)
Надаючи довільне ціле число до функції seed() випадкового модуля, початкове число випадкових чисел можна зафіксувати, а генератор випадкових чисел можна ініціалізувати.
Після ініціалізації з тим самим початковим значенням випадкове значення завжди генерується однаково.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025