Случайни числа могат да се генерират с функциите random(), uniform(), randange() и randint() в модула random на стандартната библиотека на Python.
Модулът random е включен в стандартната библиотека, така че не е необходима допълнителна инсталация. Разбира се, трябва да го импортирате.
Тук се предоставя следната информация.
random.random()
(Число с плаваща запетая между 0,0 и 1,0)random.uniform()
(Всеки диапазон от числа с плаваща запетая)- Генерирайте случайни числа, които следват нормално разпределение, разпределение на Гаус и т.н.
random.randrange()
(Цяло число с произволен обхват и стъпка)random.randint()
(Цяло число в произволен диапазон)- Генериране на списък със случайни числа като елементи
- Списък с произволни числа с плаваща запетая
- Списък с цели случайни числа
- Инициализиране на генератора на случайни числа (определяне на семето на случайните числа)
Вижте следната статия за това как да извлечете или сортирате произволно елементи от списък.
- Свързани статии:Избиране на случайни елементи от списък в Python с помощта на choice(), 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 могат да бъдат пропуснати. Ако те са пропуснати, старт=0 и стъпка=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 с помощта на choice(), sample(), choices()
Инициализиране на генератора на случайни числа (определяне на семето на случайните числа)
Чрез задаване на произволно цяло число на функцията seed() на модула random може да се фиксира семето на случайните числа и да се инициализира генераторът на случайни числа.
След инициализация с едно и също семе случайната стойност се генерира винаги по един и същи начин.
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