Генерация случайного числа в Python
Иногда, при написании программ, необходимо сгенерировать какое-либо случайное число. Для реализации этого на языке программирования Python существует модуль Random.
Генерация случайного числа с помощью модуля Random
Чтобы воспользоваться функциями модуля Random, его необходимо сначала подключить командой import.
import random
После этого можно воспользоваться необходимой вам функцией модуля Random.
Random.random
Функция возвращает случайное число в диапазоне 0 — 1.
import random print(random.random()) >>> 0.172676650596703 print(random.random()) >>> 0.41967198132083483 print(random.random()) >>> 0.9918523889221545
Random.uniform
Функция возвращает случайное вещественное число в указанном диапазоне.
import random print(random.uniform(0, 100)) >>>26.937418056935602 print(random.uniform(0, 100)) >>>50.37814119663015 print(random.uniform(0, 0.1)) >>>0.022964850436330765
В скобках указывается диапазон чисел random.unifrom(начало, конец).
Random.randint
Функция возвращает случайное целое число из указанного диапазона.
import random print(random.randint(0, 100)) >>> 3 print(random.randint(0, 100)) >>> 54 print(random.randint(0, 100000)) 31842
В скобках указывается диапазон чисел random.randint(начало, конец)
Random.randrange
Функция возвращает случайное число из указанного диапазона с определенным шагом. То есть, если мы зададим диапазон 0 — 10 и шаг 5, то функция вернет 0, 5 или 10.
import random print(random.randrange(0, 20, 5)) >>>0 print(random.randrange(0, 20, 5)) >>>15 print(random.randrange(0, 20, 2)) >>>12
В скобках указывается диапазон чисел и шаг, с которым выбирается случайное число random.randrage(начало, конец, шаг)
Random.choince
Функция возвращает случайный элемент из любого списка, например если мы зададим список с 10 значениями, то функция вернет одно из 10 значений списка.
import random print(random.choices([0, 1, 12])) >>>[0] print(random.choices([0, 1, 12])) >>>[12] print(random.choices([0, 1, 12])) >>>[1]
Функция задается в формате random.choise(список).
Генерировать случайное число в Python
В этом посте мы обсудим, как сгенерировать случайное число в Python.
1. Использование random.randrange() функция
Простой подход к генерации случайного числа между указанным диапазоном в Python заключается в использовании random.randrange() функция. Вот пример его использования:
import random
if __name__ == ‘__main__’ :
# печатать случайное число между началом (включительно) и концом (исключительно)
print ( random . randrange ( start , end ) )
Чтобы сгенерировать случайный элемент меньше значения, вы можете использовать следующий код:
import random
if __name__ == ‘__main__’ :
# печатает случайное число от 0 до 9 включительно
print ( random . randrange ( 10 ) )
2. Использование random.randint() функция
Другими словами, random.randint(x, y) функция эквивалентна для random.randrange(x, y+1) .
import random
if __name__ == ‘__main__’ :
# печатать случайное число между началом и концом, включительно
print ( random . randint ( start , end ) )
3. Использование random.choice() функция
The randint() или же randrange() является предпочтительным способом генерации случайного числа из непрерывной последовательности. Чтобы выбрать случайный элемент из последовательности, такой как список или кортеж, вы должны использовать random.choice() функция.
import random
if __name__ == ‘__main__’ :
values = list ( range ( 1 , 10 ) )
# напечатать случайное число из заданного списка
rand = random . choice ( values )
print ( rand )
4. Использование secrets.randbelow() функция
Модуль random используется для генерации псевдослучайных чисел. Чтобы сгенерировать криптографически безопасное случайное число, рассмотрите возможность использования randbelow() функцию от secrets модуль.
import secrets
if __name__ == ‘__main__’ :
# печатает криптографически безопасное случайное число
# от 0 до 9 включительно
print ( secrets . randbelow ( 10 ) )
5. Использование secrets.choice() функция
The secrets.randbelow() Функция предпочтительнее для криптографической защиты случайных чисел из непрерывной последовательности. Чтобы сгенерировать криптографически безопасное случайное число из последовательности, такой как список или кортеж, используйте метод secrets.choice() функция.
Случайные числа в Питоне
Python – один из наиболее популярных языков программирования общего назначения. Позволяет создавать не только мелкие приложения, но и сложные утилиты. Прост в освоении, за счет чего идеально подходит новичкам.
В приложениях часто приходится работать с числами, включая случайные значения. Их не только обрабатывают, но и генерируют. В данной статье речь зайдет о модуле под названием Random в Python.
Смысл неизвестного
Случайное число – это произвольная величина, которая возникает при воздействии специального приложения автоматического направления устройства. Данный процесс получил широкое распространение в программировании, особенно там, где нужно сотрудничать с неповторимыми значениями, сложными для предсказания.
Пример – это слоты в азартной деятельности и криптопароли, необходимые для защиты электронной информации, включая конфиденциальную.
Программа изначально не может создавать случайный элемент или значение. Последовательности будут опираться на рандомном определении. В основе заложено некое число. Во время инициализации последовательности с его участием несколько раз подряд, на выходе получаются одинаковые итоги. Чтобы получить объективную работу, приходится задействовать показатель часов системы.
Необходимо запомнить, что:
- При повторном запуске утилиты можно получить random число.
- Время на обработку еще одного запроса будет возрастать.
- Соответствующее явление базируется на том, что для получения нового числа нужно затратить больше времени.
Все это помогает разрешить генерация случайных чисел, базирующаяся на системных часах. Так удается достичь предельной оптимизации.
Реализация в Python
Для грамотной и слаженной работы системы в Питоне присутствуют разного рода модули. Они помогают обнаруживать random компоненты и величины. Чаще всего для получения результата приходится использовать текущее системное время, инициализированное на задействованном устройстве.
При обращении к генератору с применением соответствующей переменной можно получать новые значения типа random. Главный инструмент здесь – это многосоставная библиотека. Она носит название Random. Также используются модули и функции numpy.random и os.urandom.
Особенности
При применении рандома необходимо помнить о некоторых нюансах реализации в Python. К ним относят:
- стандартный рандом в ЯП включает в себя огромное количество генерации целых и вещественных показателей, последовательностей с четко прописанными параметрами;
- для заполнения промежутка рандомными элементами требуется задействовать функцию numpy.random;
- функция os.urandom помогает формировать набор случайных байтов;
- последний вариант чаще всего встречается при криптографии.
При обработке псевдослучайных чисел огромную роль играет присутствие в модуле random специального класса под названием SystemRandom. Процессы, которые творятся в его пределах, обращаются к функции os.urandom. Этот генератор имеет аналогичный функционал, но для криптографии он подходит лучше.
О модуле Random
В языке программирования Python модуль Random предусматривает методы, которые предназначаются для тех или иных действий. Чтобы с ним работать, стоит рассмотреть стандартную библиотеку рандома.
Она включает в себя следующие параметры:
- random() – возврат числа в значения между 0 и 1;
- seed (a) – настройка генератора на новую последовательность a;
- uniform (a, b) – возврат вещественного числа в промежуток между a и b;
- randrange (a, b, c) – возврат значения в диапазон данных от a до b с шагом c;
- randint – возвращение значения в установленный диапазон;
- shuffle (a) – миксация параметра из перечня a;
- sample (a, b) – возвращение на исходную позицию последовательности длиной b из списка a;
- choice (a) – восстановление обратно случайного элемента из заданного списка;
- getstate () – обновляет внутреннее состояние генератора;
- setstate (a) – восстановление внутреннего состояния заданного генератора;
- getrandbits (a) – восстановление a при обработке процедуры случайного генерирования бит;
- triangular (a, b, c) – отображение изначального значения числа от a до b с заданным шагом c.
Для случайной псевдопоследовательности предстоит задействовать функцию seed. Ее вызов без применения параметра позволяет использовать системный таймер. Соответствующая операция предоставляется только в конструкторе класса Random.
Генерация в примерах
Перед тем, как рассматривать наглядные примеры, которые помогут разобраться в том, что собой представляет рандом в Питоне, нужно провести инициализацию упомянутой библиотеки. Для этого необходимо выполнить команду import random.
Вещественные
У модуля есть одноименная функция random, которая чаще всего применяется в Питоне. Она возвращает число в промежуток 0-1.

Выше – наглядный пример реализации кодификации.
Целое
Случайное целое число появляется из конкретного диапазона. Для этого требуется использовать функцию randit. У нее несколько аргументов:

- максимум;
- минимум.
Предложенный пример работы со случайными элементами помогает обнаружить разные компоненты в пределах от 0 до 9 включительно.
Диапазон целых
Иногда требуется задать целый диапазон целых. Для этого применяется randrange. Он рандомно генерирует параметры за счет выставленных настроек:

- минимум;
- максимум;
- шаг.
Здесь случайная генерация – это вызов функции с одним требованием. Граница устанавливается на 0, промежуток – на 1. Для двух аргументов длина шага будет автоматически рассчитываться. Программа работает на основе трех заданных наборов.
Диапазон вещественных
Число с плавающей запятой встречается часто и генерируется оно обычно случайным образом. Можно задать их диапазон в рассматриваемой библиотеке. Получение таких чисел в Python осуществляется через uniform. У этой функции random всего два параметра – минимум и максимум.

Выше – приложение, которое демонстрирует процесс с переменными a и b.
В генераторе
Рандом может пригодиться при выводе псевдослучайных параметров. Этот прием способствует созданию некой последовательности. Для реализации задачи нужно воспользоваться randit.

Это – пример, который позволяет создать генератор списка со случайно заданными элементами и длиной.
Перемешивание
Метод Shuffle при работе из библиотеки random помогает осуществлять перемешивание компонентов. Актуально для ранее созданных списком. Все его компоненты распределяются совершенно случайно.

В виде программного кода соответствующее приложение будет иметь такой вид.
Случайный компонент
Choice 0 функция из Random, которая случайным образом выводит элемент из набора данных. Иногда соответствующая операция нужна даже в простейших утилитах.

Тут b приобретает определенное целое значение из списка под названием a.
Несколько из списка
Рассматривая random, стоит помнить – иногда возникает необходимость выборки нескольких компонентов из определенного заранее списка случайным образом. Тут помогает функция sample. Первый аргумент – это исходная последовательность. Второй – длина нового массива.

Вот – наглядный пример соответствующей утилиты и полученного в ходе обработки кодификации информации.
Буквы
Когда программер хорошо разобрался в print, i in range, for i in и иных ключевых функциях языка, а также выучил принцип работы с числами и их случайной генерацией, можно рассмотреть аналогичную операцию с буквами.

Для реализации требуется провести импортирование модуля string, а затем – задействовать список letters. Он отвечает за отображение английского алфавита.
SystemRandom
Эта возможность базируется на os.urandom. Позволяет создавать псевдослучайные параметры, которые будут находиться в полной зависимости от дополнительных данных операционной системы. Способствует стабильной работе в криптографии. Единственный существенный минус SystemRandom – это относительно медленная работа.

А вот – пример того, как будет выглядеть соответствующее приложение.
Быстро освоить Питон, а также разобраться с генерацией случайных значений и списков помогут специализированные компьютерные курсы, ориентированные на широкую публику. Программа составлена так, что с ней справится даже новичок. В конце выдается сертификат установленного образца.
«Случайные» числа в Python – random, randint и randrange
В компьютерных программах нередко требуется эмуляция случайности. Например, при разработке игр. Если в программе имеется некий генератор, то есть производитель, случайного числа, то, используя полученное таким образом число, можно выбирать ту или иную ветку выполнения программы, или произвольный объект из коллекции. Другими словами, главное – сгенерировать число. Эмуляция случайности иного рода основывается на нем.
Мы наверняка не знаем, есть ли в природе случайность, или она нам только кажется из-за ограниченности наших знаний. Мы только знаем, что в программировании настоящей случайности нет. Неоткуда взяться произвольному числу, нельзя запрограммировать его появление из ниоткуда. Можно лишь создать программу, которая в результате применения сложной формулы к «зерну» будет выдавать число, и нам будет казаться, что это число случайно.
«Зерно» – это исходные данные для формулы. Им может быть, например, системное время в миллисекундах, которое постоянно меняется. Следовательно, «зерно» будет постоянно разным. Или программист может задавать его самостоятельно.
Подобную программу (в реальности модуль или функцию) называют генератором псевдослучайных чисел. В состав стандартной библиотеки языка Python входит модуль random . Он содержит множество функций, связанных с эмуляцией случайности (например, «перемешивание» элементов последовательности), а не только функции генерации псевдослучайных чисел.
В этом уроке будут рассмотрены функции random() , randrange() и randint() из модуля random . Обратите внимание, что модуль random содержит одноименную функцию random() . Так бывает.
Чтобы обращаться к функциям, надо импортировать модуль random :
>>> import random
Или импортировать отдельные функции из него:
>>> from random import random, randrange, randint
Функции для получения целых «случайных» чисел – randint() и randrange()
Функции randint() и randrange() генерируют псевдослучайные целые числа. Первая из них наиболее простая и всегда принимает только два аргумента – пределы целочисленного диапазона, из которого выбирается любое число:
>>> random.randint(0, 10) 6
или (если импортировались отдельные функции):
>>> randint(100, 200) 110
В случае randint() обе границы включаются в диапазон, т. е. на языке математики отрезок описывается как [a; b].
Числа могут быть отрицательными:
>>> random.randint(-100, 10) -83 >>> random.randint(-100, -10) -38
Но первое число всегда должно быть меньше или, по-крайней мере, равно второму. То есть a
Функция randrange() сложнее. Она может принимать один аргумент, два или даже три. Если указан только один, то она возвращает случайное число от 0 до указанного аргумента. Причем сам аргумент в диапазон не входит. На языке математики – это [0; a).
>>> random.randrange(10) 4
>>> randrange(5) 0
Если в randrange() передается два аргумента, то она работает аналогично randint() за одним исключением. Верхняя граница не входит в диапазон, т. е. [a; b).
>>> random.randrange(5, 10) 9 >>> random.randrange(1, 2) 1
Здесь результатом второго вызова всегда будет число 1.
Если в randrange() передается три аргумента, то первые два – это границы диапазона, как в случае с двумя аргументами, а третий – так называемый шаг. Если, например, функция вызывается как randrange(10, 20, 3) , то «случайное» число будет выбираться из чисел 10, 13, 16, 19:
>>> random.randrange(10, 20, 3) 13 >>> random.randrange(10, 20, 3) 19 >>> random.randrange(10, 20, 3) 10
Функция random() – «случайные» вещественные числа
Чтобы получить случайное вещественное число, или, как говорят, число с плавающей точкой, следует использовать функцию random() из одноименного модуля random языка Python. Она не принимает никаких аргументов и возвращает число от 0 до 1, не включая 1:
>>> random.random() 0.17855729241927576 >>> random.random() 0.3310978930421846
>>> random() 0.025328854415995194
Результат содержит много знаков после запятой. Чтобы его округлить, можно воспользоваться встроенной в Python функцией round() :
>>> a = random.random() >>> a 0.8366142721623201 >>> round(a, 2) 0.84 >>> round(random.random(), 3) 0.629
Чтобы получать случайные вещественные числа в иных пределах, отличных от [0; 1), прибегают к математическим приемам. Так если умножить полученное из random() число на любое целое, то получится вещественное в диапазоне от 0 до этого целого, не включая его:
>>> random.random() * 10 2.510618091637596 >>> random.random() * 10 6.977540211221759
Если нижняя граница должна быть отличной от нуля, то число из random() надо умножать на разницу между верхней и нижней границами, после чего прибавить нижнюю:
>>> random.random() * (10 - 4) + 4 9.517280589233597 >>> random.random() * (10 - 4) + 4 6.4429124181215975 >>> random.random() * (10 - 4) + 4 4.9231983600782385
В данном примере число умножается на 6. В результате получается число от 0 до 6. Прибавив 4, получаем число от 4 до 10.
Пример получения случайных чисел от -1 до 1:
>>> random.random() * (1 + 1) - 1 -0.673382618351051 >>> random.random() * (1 + 1) - 1 0.34121487148075924 >>> random.random() * (1 + 1) - 1 -0.988751324713907 >>> random.random() * (1 + 1) - 1 0.44137358363477674
Нижняя граница равна -1. При вычитании получается +. Когда добавляется нижняя граница, то плюс заменяется на минус ( +(-1) = — 1).
Для получения псевдослучайных чисел можно пользоваться исключительно функцией random() . Если требуется получить целое, то всегда можно округлить до него с помощью round() или отбросить дробную часть с помощью int() :
>>> int(random.random() * 100) 61 >>> round(random.random() * 100 - 50) -33
Практическая работа
- Используя функцию randrange() получите псевдослучайное четное число в пределах от 6 до 12. Также получите число кратное пяти в пределах от 5 до 100.
- Напишите программу, которая запрашивает у пользователя границы диапазона и какое (целое или вещественное) число он хочет получить. Выводит на экран подходящее случайное число.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
