Генерировать случайное число python

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

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

Оглавление

Генерация случайных чисел с плавающей точкой

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

# Генерация случайного числа в диапазоне от 0 до 1 import random print(random.random()) # Результат: # 0.9853067530373302

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

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

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

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

Как видите, случайное число находится в диапазоне между двумя числами (и может их включать).

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

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

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

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

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

В приведенном выше примере мы использовали диапазон от 0 до 10. Однако, если нам нужен другой диапазон, мы смело можем его указать.

Например, давайте сгенерируем случайное число в диапазоне от -100 до 100:

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

Генерация случайных чисел, кратных определенному числу

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

Читайте также:  Javascript синтаксис похож на

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

# Генерация случайного числа, кратного определенному числу import random print(random.randrange(0,100,3)) # Результат: # 51

Важно заметить, что в данном случае само число 100 (верхний предел нашего диапазона) в диапазон не входит. Если мы хотим, чтобы оно все же входило, нужно увеличить верхнюю границу на 1, то есть функция примет следующий вид: randrange(0, 101, 3) .

Генерация списка случайных чисел

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

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

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

В приведенных ниже примерах мы при помощи list comprehension создадим два списка: один со случайными числами типа float в диапазоне от 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]

Давайте разберем данный код. В переменной random_list мы создали новый список при помощи генератора списков Python. Для создания случайных чисел внутри генератора списка четыре раза вызывалась функция random() .

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

# Генерация списка случайных чисел с плавающей точкой в диапазоне от 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() .

Читайте также:  Html style text in textarea

В качестве аргументов данная функция принимает функцию range() , которая задает требуемый диапазон, а также количество элементов списка, которые мы хотим получить. Например, мы хотим получить список из пяти случайных целых чисел без повторений в диапазоне от 0 до 15. Тогда код будет иметь следующий вид:

# Создание списка случайных целых чисел без повторений import random random_list = random.sample(range(0, 16), k=5) print(random_list) # Результат: # [2, 6, 14, 9, 12]

Генерация случайных чисел, имеющих нормальное распределение

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

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

# Генерация случайной величины, имеющей гауссово распределение import random random_gaussian = random.gauss(10, 1) print(random_gaussian) # Результат: # 10.202050547919738

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

  • бета-распределение: random.betavariate()
  • экспоненциальное распределение: random.expovariate()
  • гамма-распределение: random.gammavariate()
  • Гауссово (нормальное) распределение: random.gauss() и random.normalvariate()
  • логарифм нормального распределения: random.lognormvariate()

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

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

Давайте посмотрим, как это работает:

# Создание воспроизводимых результатов генерации случайных чисел import random random.seed(100) print(random.random()) # Результат: # 0.1456692551041303

Здесь мы импортируем библиотеку random . Затем вызываем функцию random.seed , установив начальное значение seed равным 100. После этого генерируем и выводим на экран случайное число. Если мы запустим этот код снова, будет выведено точно такое же число.

Заключение

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

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

Источник

Модуль random на примерах — Изучение методов генерации случайных данных

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

Список методов модуля random в Python:

Метод Описание
seed() Инициализация генератора случайных чисел
getstate() Возвращает текущее внутренне состояние (state) генератора случайных чисел
setstate() Восстанавливает внутреннее состояние (state) генератора случайных чисел
getrandbits() Возвращает число, которое представляет собой случайные биты
randrange() Возвращает случайное число в пределах заданного промежутка
randint() Возвращает случайное число в пределах заданного промежутка
choice() Возвращает случайный элемент заданной последовательности
choices() Возвращает список со случайной выборкой из заданной последовательности
shuffle() Берет последовательность и возвращает ее в перемешанном состоянии
sample() Возвращает заданную выборку последовательности
random() Возвращает случайное вещественное число в промежутке от 0 до 1
uniform() Возвращает случайное вещественное число в указанном промежутке
triangular() Возвращает случайное вещественное число в промежутке между двумя заданными параметрами. Также можно использовать параметр mode для уточнения середины между указанными параметрами
betavariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Бета-распределении, которое используется в статистике
expovariate() Возвращает случайное вещественное число в промежутке между 0 и 1, или же между 0 и -1 , когда параметр отрицательный. За основу берется Экспоненциальное распределение, которое используется в статистике
gammavariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гамма-распределении, которое используется в статистике
gauss() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гауссовом распределении, которое используется в теории вероятности
lognormvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Логнормальном распределении, которое используется в теории вероятности
normalvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Нормальном распределении, которое используется в теории вероятности
vonmisesvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении фон Мизеса, которое используется в направленной статистике
paretovariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Парето, которое используется в теории вероятности
weibullvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Вейбулла, которое используется в статистике
Читайте также:  Java make get request

Цели данной статьи

Далее представлен список основных операций, которые будут описаны в руководстве:

  • Генерация случайных чисел для различных распределений, которые включают целые и вещественные числа с плавающей запятой;
  • Случайная выборка нескольких элементов последовательности population ;
  • Функции модуля random;
  • Перемешивание элементов последовательности. Seed в генераторе случайных данных;
  • Генерация случайных строки и паролей;
  • Криптографическое обеспечение безопасности генератора случайных данных при помощи использования модуля secrets. Обеспечение безопасности токенов, ключей безопасности и URL;
  • Способ настройки работы генератора случайных данных;
  • Использование numpy.random для генерации случайных массивов;
  • Использование модуля UUID для генерации уникальных ID.

В статье также даются ссылки на некоторые другие тексты сайта, связанные с рассматриваемой темой.

Как использовать модуль random в Python

Для достижения перечисленных выше задач модуль random будет использовать разнообразные функции. Способы использования данных функций будут описаны в следующих разделах статьи.

Источник

Оцените статью