Генерация случайных чисел в Python

В этом руководстве вы научитесь генерировать случайные числа в Python. Умение генерировать случайные числа различными способами может быть невероятно полезным инструментом во многих областях. Python делает генерацию случайных чисел различными способами очень простой.

Для выполнения этой задачи вы изучите модули random и numpy, включая функции randrange, randint, random и seed. Вы также узнаете о функциях uniform и normal, чтобы создавать более контролируемые случайные значения.

К концу этого урока вы узнаете:

  • Как генерировать случайные значения с плавающей запятой и целые числа

  • Как генерировать случайные числа между разными значениями

  • Как создавать списки случайных чисел

  • Как сгенерировать случайное число, соответствующее распределению Гаусса

Оглавление

Создать случайное значение с плавающей запятой в Python

Python поставляется с встроенным пакетом random, что означает, что вам не нужно устанавливать дополнительные библиотеки. Эта библиотека значительно упрощает генерацию случайных чисел. Давайте сначала посмотрим, как создать случайное вещественное число от 0 до 1

# Генерация случайного числа с плавающей точкой от 0 до 1
import random
print(random.random())

# Вывод: 0.9853067530373302

Давайте разберем, что мы здесь сделали:

  1. Мы импортировали библиотеку random

  2. Мы использовали функцию .random() из библиотеки

Функция random() используется для генерации случайного числа с плавающей точкой в диапазоне от 0 до 1.

Создать случайное число с плавающей запятой между двумя числами

Хотя функция random() генерирует случайное число с плавающей точкой между 0 и 1, иногда может возникнуть необходимость сгенерировать случайное число с плавающей точкой между любыми двумя значениями. Для этого вы можете использовать функцию .uniform(). Давайте посмотрим, как это работает:

# Генерация случайного числа с плавающей точкой в заданном диапазоне
import random
print(random.uniform(10, 20))

# Вывод: 18.754091000858978

Вы можете видеть, что возвращаемое случайное число находится в пределах заданных границ (включая сами границы).

В следующем разделе вы узнаете, как генерировать случайное целое число в Python.

Библиотека random позволяет легко генерировать случайные целые числа в Python. Для этого можно использовать функцию randint(), которая принимает два параметра:

  • a= это нижняя граница диапазона, которую можно выбрать

  • b= является верхней границей диапазона, которая также может быть выбрана

Давайте посмотрим, как можно сгенерировать случайное целое число в Python:

# Генерация случайного целого числа в Python
import random
print(random.randint(0,10))

# Вывод: 6

Генерация случайных чисел между двумя значениями в Python

В приведенном выше примере мы использовали 0 в качестве начальной точки. Однако, если мы хотим сгенерировать случайное число между двумя значениями, мы можем просто указать другое значение в качестве начальной точки (включая отрицательные значения).

Давайте повторим этот пример, выбрав случайное целое число от -100 до 100:

# Генерация случайного целого числа между двумя значениями
import random
print(random.randint(-100,100))

# Вывод: -24

Генерация случайных чисел между двумя значениями на определенных шагах в Python

В этом разделе вы научитесь генерировать случайные числа между двумя значениями с определенным шагом. Это означает, что если вы хотите выбрать случайное число между, скажем, 0 и 100, но только кратное 3.

Для этого вы можете использовать функцию randrange(). Давайте посмотрим, как это работает:

# Выбор случайного значения из диапазона с шагом
import random
print(random.randrange(0,100,3))

# Вывод: 51

Важно отметить, что верхнее ограничивающее число не включается в выбор. Чтобы включить его, просто добавьте к значению 1, например, random.randrange(0, 101, 3)

Создать список случайных чисел в Python

В этом разделе вы научитесь генерировать список случайных чисел в Python. Поскольку это можно сделать разными способами, мы разделим этот раздел на несколько частей. По завершении вы научитесь выбирать список случайных вещественных чисел, случайных целых чисел и случайных целых чисел без повторений.

Создайте список случайных чисел с плавающей запятой

Чтобы сгенерировать список случайных чисел с плавающей точкой, мы можем просто несколько раз вызвать функции .random() или .uniform(). Мы можем использовать либо цикл for, либо понимание списка.

В приведенных ниже примерах мы будем использовать списочные включения для генерации двух списков: один со случайными числами с плавающей запятой между 0 и 1, а другой со случайными числами с плавающей запятой между двумя указанными числами:

# Создание списка случайных чисел с плавающей точкой от 0 до 1
import random

random_list = [random.random() for i in range(4)]
print(random_list)

# Вывод: [0.5581711161676459, 0.12711142718586899, 0.766167958409145, 0.16922239303028397]

Давайте разберем, что мы здесь сделали:

  1. Мы создали новый список, random_list, который содержит понимание списка

  2. Списковое включение повторяет вызов функции .random() 4 раза.

Мы можем использовать тот же подход, чтобы создать список случайных вещественных чисел между двумя заданными числами:

# Создание списка случайных чисел с плавающей точкой от 10 до 30
import random

random_list = [random.uniform(10, 30) for i in range(4)]
print(random_list)

# Вывод: [17.8132149201385, 25.11003157219303, 10.68442113276928, 24.26692625415757]

Создайте список случайных целых чисел

Мы можем применить тот же подход для генерации списка случайных целых чисел. Для этого мы создадим списочное включение, которое несколько раз вызывает функцию random.randint(). Давайте посмотрим, как мы можем создать список из 5 случайных целых чисел в диапазоне от 50 до 100:

# Создание списка случайных целых чисел в Python
import random

random_list = [random.randint(50, 100) for i in range(5)]
print(random_list)

# Вывод: [79, 66, 55, 69, 73]

Сгенерируйте список случайных целых чисел без замены

В этом разделе вы научитесь генерировать список случайных целых чисел без повторений. Это означает, что каждое число можно выбрать только один раз. Для этого можно использовать функцию random.sample()

Функция ожидает список значений и количество значений для выбора. Таким образом, если вы хотели бы выбрать пять значений без замены в диапазоне от 0 до 15, вы могли бы написать:

# Создание списка случайных целых чисел без повторений
import random

random_list = random.sample(range(0, 16), k=5)
print(random_list)

# Вывод: [2, 6, 14, 9, 12]

Создайте случайное (нормальное) гауссово распределение в Python

Библиотека random также позволяет выбирать случайное значение, соответствующее нормальному гауссовому распределению. Для этого можно использовать функцию gauss(), которая принимает как среднее значение, так и стандартное отклонение распределения

Давайте посмотрим, как вы можете сгенерировать случайное значение из распределения со средним значением 10 и стандартным отклонением 1:

# Выбор случайного числа из нормального распределения
import random

random_gaussian = random.gauss(10, 1)
print(random_gaussian)

# Вывод: 10.202050547919738

Хотите создать целое распределение? Ознакомьтесь с этой статьей, которая научит вас производить полное Гауссово (нормальное) распределение с использованием Numpy

Библиотека random также предлагает удобные способы генерации случайных чисел из других типов распределений. Полный список смотрите ниже:

  • Бета-дистрибутив:random.betavariate()

  • Экспоненциальное распределение: random.expovariate()

  • Гамма-распределение:random.gammavariate()

  • Гауссово распределение:random.gauss()

  • Логическое нормальное распределение: random.lognormvariate()

  • Нормальное распределение: random.normalvariate()

Создание воспроизводимых случайных чисел в Python

Часто возникают случаи, когда вам нужно генерировать случайное число, но при этом хотите иметь возможность воспроизвести ваш результат. Здесь на помощь приходит функция random.seed(). Она позволяет установить начальное значение, которое вы можете воспроизвести в любое время.

Давайте посмотрим, как мы можем это сделать:

# Создание результатов, которые можно воспроизвести
import random

random.seed(100)
print(random.random())

# Вывод: 0.1456692551041303

Давайте немного разберем это:

  1. Мы импортировали библиотеку

  2. Мы затем задали случайное начальное значение, используя число 100

  3. Затем, когда мы выводили на печать случайное вещественное число, было возвращено значение

  4. Если бы мы запустили это снова, вернулось бы то же значение

Заключение

В этом учебнике вы узнали, как генерировать случайные числа с использованием Python. Вы узнали, как работает библиотека random для генерации случайных чисел, включая числа с плавающей запятой и целые числа. Вы также узнали, как генерировать случайные числа из разных диапазонов чисел, включая только кратные числа.

Вы научились генерировать списки случайных чисел, включая числа с плавающей точкой и целые числа, а также без замещения. Наконец, вы научились выбирать случайные числа из нормального распределения и как воспроизводить свои результаты.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

Last updated