Функция choice() модуля в Python, выбирает случайный элемент
Выбрать один элемент случайным образом из списка, строки, кортежа или range()
Синтаксис:
import random elem = random.choice(seq)
Параметры:
- seq — последовательность (строка, список и т.д.).
Возвращаемое значение:
- один случайный элемент последовательности seq .
Описание:
Функция random.choice() модуля random возвращает один случайный элемент из непустой последовательности seq .
Последовательность seq может быть неизменяемой (кортеж, строка и т.д.) или изменяемая (список). Функция random.choice() поддерживает диапазоны range() .
Если последовательность seq пуста, то поднимается исключение IndexError .
Неупорядоченные последовательности set() и frozenset() не поддерживаются. Множество set() / frozenset() сначала должно быть преобразовано в список или кортеж.
Пример выбора случайного символа из строки:
>>> import random # строка представляет собой неизменяемую # последовательность символов >>> line = 'abcdefg' # выбор случайного символа из строки `line` >>> random.choice(line) # 'f'
Пример выбор случайного элемента из списка:
>>> import random >>> lst = [1, 'a', 2, 'b', 3, 'c'] # выбор случайного элемента из списка `lst` >>> random.choice(lst) # '3'
Пример выбор случайного числа из диапазона:
>>> import random >>> rng = range(1, 90, 7) # выбор случайного элемента из диапазона `rng` >>> random.choice(rng) # 8 >>> random.choice(rng) # 29 >>> random.choice(rng) # 50
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Генерация случайного целого числа или байтов
- Генерация случайных вещественных чисел
- Функция choice() модуля , выбирает случайный элемент
- Функция random.choices(), выбирает несколько случайных элементов
- Функция shuffle() модуля random, перемешивает список
- Функция random.sample() модуля random
- Инициализация и состояние генератора
- Классы Random() и SystemRandom() модуля random
- Вероятностные распределения в модуле random Python
- Рецепты использования модуля random
- Функция binomialvariate() модуля random
Вложенные списки. Модуль random¶
Модуль random предоставляет функции для работы с псевдослучайными величинами. Для решения задач этого занятия понадобятся следующие функции.
Возвращает псевдослучайное число на отрезке [a, b] .
random. choice ( seq ) ¶
Возвращает случайный элемент из последовательности seq . Пример:
>>> import random >>> t = (1, 2, 3) >>> random.choice(t) 2 >>> random.choice(t) 1
random. shuffle ( lst ) ¶
Перемешивает элементы в списке lst :
>>> lst = list(range(10)) >>> lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> random.shuffle(lst) >>> lst [0, 9, 3, 2, 1, 5, 7, 6, 4, 8]
Задачи¶
- Реализовать игру «Города». Шаг 1. Версия для двух игроков за одним компьютером. Названные города не должны повторяться. Шаг 2. Добавить проверку на существование города. Шаг 3. Реализовать режим игры против компьютера. Модули с подготовленными списками городов:
- cities_cpu_win.py
- cities_loop.py
- cities_player_win.py
- cities.py
- Реализовать игру «Анаграммы». Приложение выводит слово, буквы в котором перемешаны. Игрок должен назвать исходное слово.
- Пользователь вводит три числа: n , min_value , max_value . Приложение создает список из n элементов и заполняет его случайными числами из [min_value, max_value] .
- По аналогии с задачей 1 создать матрицу n на m и заполнить ее случайными числами из [min_value, max_value) .
- Цвета кодируются тройкой (red, green, blue) . Каждый компонент может принимать значения от 0 до 255. Напишите приложение, генерирующее случайный цвет. Для удобства его значение можно вывести в шестнадцатеричном формате (например, 345EBF ). Для просмотра полученного цвета можно использовать сервис https://colorscheme.ru/.
- Пользователь вводит число n . Приложение создает и выводит матрицу, заполненную «змейкой». Пример:
n: 5 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25
ticket = [ [ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], ]
Пользователь должен выбрать пять чисел: по одному числу из каждой строки. Числа могут быть выбраны в любом порядке. Приложение делает аналогичный выбор случайным образом, а затем выводит статистику. Пример:
row 0 3 row 1 7 row 2 14 row 3 19 row 4 21 User Random 3 1 - 7 9 - 14 13 - 19 19 + 21 23 -
© Copyright Revision d00c0df4 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
«Случайные» числа в 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. Введение в программирование
Модуль random

Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.seed([X], version=2) — инициализация генератора случайных чисел. Если X не указан, используется системное время.
random.getstate() — внутреннее состояние генератора.
random.setstate(state) — восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().
random.getrandbits(N) — возвращает N случайных бит.
random.randrange(start, stop, step) — возвращает случайно выбранное число из последовательности.
random.randint(A, B) — случайное целое число N, A ≤ N ≤ B.
random.choice(sequence) — случайный элемент непустой последовательности.
random.shuffle(sequence, [rand]) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
random.sample(population, k) — список длиной k из последовательности population.
random.random() — случайное число от 0 до 1.
random.uniform(A, B) — случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high. Mode — распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0.
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
Все довольно просто, и теперь вы можете генерировать случайные числа и последовательности. Удачи в ваших изысканиях!
Для вставки кода на Python в комментарий заключайте его в теги