Генерация нескольких случайных цифр python
Есть функция random.randint(), которая генерирует 1 случайное число, но мне нужно сгенерировать таких чисел 6. Как это можно реализовать? У меня есть 1 вариант, по типу:
list = [] for i in range(1, 7) list += random.randint(0, 9)
Но мне кажется данный код выглядит не очень и его можно улучшить.
Отслеживать
задан 9 мая 2021 в 19:02
311 2 2 серебряных знака 17 17 бронзовых знаков
[ random.randint(0, 9) for _ in range(10)]
9 мая 2021 в 19:05
numpy.random.randint(0, 9, 10)
9 мая 2021 в 19:07
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
С использованием генератора списков
lst = [random.randint(0, 9) for _ in range(6)]
Отслеживать
ответ дан 9 мая 2021 в 19:05
51.5k 3 3 золотых знака 18 18 серебряных знаков 42 42 бронзовых знака
@ZeN Ответ непонятен?
11 мая 2021 в 19:28
- python
- python-3.x
- случайные-числа
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Модуль Random для генерации случайных чисел в Python
Этот модуль реализует генераторы псевдослучайных чисел под различные потребности.
- Для целых чисел есть выбор одного из диапазона.
- Для последовательностей — выбор случайного элемента, функция случайной сортировки списка и функция случайного выбора нескольких элементов из последовательности.
- Есть функции для вычисления однородных, нормальных (Гауссовских), логнормальных, отрицательных экспоненциальных, гамма и бета распределений.
- Для генерации распределений углов доступно распределение фон Мизеса.
Почти все функции модуля зависят от основной функции random() , которая генерирует случайным образом чисто с плавающей точкой(далее float) равномерно в полуоткрытом диапазоне [0.0, 1.0).
Python использует Mersenne Twister в качестве основного генератора. Он производит 53-битные точные float и имеет период 2**19937-1. Основная его реализация в C быстрая и многопоточная. Mersenne Twister один из наиболее широко протестированных генераторов случайных чисел. Однако, будучи полностью детерминированным, он подходит не для любых целей, особенно для криптографических.
Модуль random так же предоставляет класс SystemRandom . Этот класс использует системную функцию os.urandom() для генерации случайных чисел из источников, которые предоставляет операционная система.
Псевдослучайные генераторы этого модуля не должны использоваться в целях безопасности. Для обеспечения безопасности или для криптографического использования ознакомьтесь с модулем secrets .
Функции для целых чисел
random.randrange(stop)
random.randrange(start, stop[, step])
Возвращает случайно выбранный элемент из range(start, stop, step) . Это эквивалентно choice(range(start, stop, step)) , но не создает объект диапазона.
Как сгенерировать рандомное число в питоне
Модуль random управляет генерацией случайных чисел. Его основные функции:
- random() : генерирует случайное число от 0.0 до 1.0
- randint() : возвращает случайное число из определенного диапазона
- randrange() : возвращает случайное число из определенного набора чисел
- shuffle() : перемешивает список
- choice() : возвращает случайный элемент списка
Функция random() возвращает случайное число с плавающей точкой в промежутке от 0.0 до 1.0. Если же нам необходимо число из большего диапазона, скажем от 0 до 100, то мы можем соответственно умножить результат функции random на 100.
import random number = random.random() # значение от 0.0 до 1.0 print(number) number = random.random() * 100 # значение от 0.0 до 100.0 print(number)
Функция randint(min, max) возвращает случайное целое число в промежутке между двумя значениями min и max.
import random number = random.randint(20, 35) # значение от 20 до 35 print(number)
Функция randrange() возвращает случайное целое число из определенного набора чисел. Она имеет три формы:
- randrange(stop) : в качестве набора чисел, из которых происходит извлечение случайного значения, будет использоваться диапазон от 0 до числа stop
- randrange(start, stop) : набор чисел представляет диапазон от числа start до числа stop
- randrange(start, stop, step) : набор чисел представляет диапазон от числа start до числа stop, при этом каждое число в диапазоне отличается от предыдущего на шаг step
import random number = random.randrange(10) # значение от 0 до 10 не включая print(number) number = random.randrange(2, 10) # значение в диапазоне 2, 3, 4, 5, 6, 7, 8, 9 print(number) number = random.randrange(2, 10, 2) # значение в диапазоне 2, 4, 6, 8 print(number)
Работа со списком
Для работы со списками в модуле random определены две функции: функция shuffle() перемешивает список случайным образом, а функция choice() возвращает один случайный элемент из списка:
numbers = [1, 2, 3, 4, 5, 6, 7, 8] random.shuffle(numbers) print(numbers) random_number = random.choice(numbers) print(random_number)
Случайные числа в Python
Чтобы работать со случайным числом в Python, нам нужно сначала импортировать модуль random, который обеспечивает псевдослучайность.
Модуль случайных чисел в Python использует Mersenne Twister в качестве основного генератора случайных чисел. Таким образом, этот модуль совершенно не подходит для криптографических целей, поскольку является детерминированным. Однако мы можем использовать модуль random в большинстве случаев, потому что он содержит множество хорошо известных случайных распределений.
Случайное целое число в Python
В этом разделе мы обсудим случайную генерацию целых чисел. Мы можем использовать функцию randint (a, b), чтобы получить случайное целое число от диапазона a до b. Опять же, мы можем получить число из последовательности, используя функцию randrange (start, stop, step). Давайте посмотрим на пример, чтобы получить случайное целое число.
import random as rand a = 10 b = 100 print('\na =', a, 'and b =', b) print('printing number [', a, ', ', b, ') :', rand.randint(a,b)) start = 1 stop = 12 step = 2 print('\nsequence = [1, 3, 5, 7, 9, 11]') print('printing one number from the sequence :', rand.randrange(start, stop, step))
Для каждого прогона результат будет меняться. Однако здесь приведен пример вывода.
С плавающей запятой
Есть несколько функций, которые возвращают вещественное число или с плавающей точкой в случайном порядке. Например, функция random() возвращает действительное число от 0 до 1 (исключая).
Опять же, функции uniform (a, b) возвращают действительное число от a до b. Кроме того, в модуле random также доступны некоторые случайные распределения. Мы также можем получить реальное число из этого распределения.
Мы можем получить случайные числа из экспоненциального распределения, используя экспоненциальную функцию (лямбд).
import random as rand print('Random number from 0 to 1 :', rand.random()) print('Uniform Distribution [1,5] :', rand.uniform(1, 5)) print('Gaussian Distribution mu=0, sigma=1 :', rand.gauss(0, 1)) print('Exponential Distribution lambda = 1/10 :', rand.expovariate(1/10))
Значения на выходе будут отличаться для каждого выполнения. Вы получите такой результат:
Random number from 0 to 1 : 0.5311529501408693 Uniform Distribution [1,5] : 3.8716411264052546 Gaussian Distribution mu=0, sigma=1 : 0.8779046620056893 Exponential Distribution lambda = 1/10 : 1.4637113187536595
Random seed в Python
Генерация случайных чисел Python основана на предыдущем числе, поэтому использование системного времени – отличный способ гарантировать, что каждый раз, когда наша программа запускается, она генерирует разные числа. Мы можем использовать функцию random seed() для установки начального значения.
Обратите внимание: если наше начальное значение не меняется при каждом выполнении, мы получим одинаковую последовательность чисел.
Ниже приведен пример программы, подтверждающей эту теорию о ценности seed.
import random random.seed(10) print('1st random number = ', random.random()) print('2nd random number = ', random.random()) print('1st random int = ', random.randint(1, 100)) print('2nd random int = ', random.randint(1, 100)) # resetting the seed to 10 i.e. first value random.seed(10) print('3rd random number = ', random.random()) print('4th random number = ', random.random()) print('3rd random int = ', random.randint(1, 100)) print('4th random int = ', random.randint(1, 100))

Случайный список – choice(), shuffle(), sample()
Есть несколько функций для использования случайности в последовательности. Например, с помощью функции choice() вы можете получить случайный элемент из последовательности.
Опять же, используя функцию shuffle(), вы можете перетасовать элементы в последовательности.
С помощью функции sample(), вы можете получить x количество элементов из последовательности случайным образом. Итак, давайте посмотрим следующий код для примера случайного списка:
import random as rand # initialize sequences string = "inconvenience" l = [1, 2, 3, 4, 10, 15] # get a single element randomly print('Single character randomly chosen :', rand.choice(string)) print('one randomly chosen number :', rand.choice(l)) # get multiple element print('Randomly chosen 4 character from string :', rand.sample(string, 4)) print('Randomly chosen 4 length list :', rand.sample(l, 4)) # shuffle the list rand.shuffle(l) print('list is shuffled :', l) # print the list
Получаем следующий результат:
Single character randomly chosen : i one randomly chosen number : 10 Randomly chosen 4 character from string : ['e', 'c', 'n', 'n'] Randomly chosen 4 length list : [2, 10, 3, 15] list is shuffled : [2, 4, 15, 3, 10, 1]
