Случайные числа можно генерировать с помощью функций 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)
Функция этого модуля random возвращает случайно выбранный элемент из следующих элементов.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
Аргумент step может быть установлен для генерации четного или нечетного случайного целого числа, или случайного целого числа, кратного трем.
Например, если начало четное, а шаг=2, то случайным образом могут быть получены только четные целые числа в диапазоне.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Целое число в любом диапазоне)
randint(a, b)
Функция этого модуля random возвращает следующее случайное целое число 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