Как генерировать случайные целые числа от 0 до 9 (включительно) в Python?
Например, 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
.
Попробуйте:
from random import randrange
print(randrange(10))
Дополнительная информация: http://docs.python.org/library/random.html#random.randrange
import random
print(random.randint(0,9))
random.randint(a, b)
Возвращает случайное целое число N такое, что a <= N <= b.
Документы: https://docs.python.org/3.1/library/random.html#random.randint
Попробуйте это:
from random import randrange, uniform
# randrange gives you an integral value
irand = randrange(0, 10)
# uniform gives you a floating-point value
frand = uniform(0, 10)
Выберите размер массива (в данном примере, я выбрал размер 20). И потом, использовать следующее:
import numpy as np
np.random.randint(10, size=(1, 20))
Вы можете ожидать, чтобы увидеть выход в следующую форму (другой случайный чисел будут возвращаться каждый раз, когда вы запустите его; следовательно, можно ожидать, что числа в массиве выходных отличаться от примера, приведенного ниже).
array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
В случае непрерывных чисел randint
или randrange
, вероятно, лучший выбор, но если у вас есть несколько различных значений в последовательности (т. е. "список"), вы могли бы также использовать выбор
:
>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5
"выбор" работает для одного элемента из не-непрерывный образец:
>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7
Если вам это нужно "по криптостойкому, что" там's также секреты.выбор` в Python 3.6 и новее:
>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
Я хотел бы попробовать один из следующих:
import numpy as np
X1 = np.random.randint(low=0, high=10, size=(15,))
print (X1)
>>> array([3, 0, 9, 0, 5, 7, 6, 9, 6, 7, 9, 6, 6, 9, 8])
2.> и NumPy.случайные.униформа
import numpy as np
X2 = np.random.uniform(low=0, high=10, size=(15,)).astype(int)
print (X2)
>>> array([8, 3, 6, 9, 1, 0, 3, 6, 3, 3, 1, 2, 4, 0, 4])
from random import randrange
X3 = [randrange(10) for i in range(15)]
print (X3)
>>> [2, 1, 4, 1, 2, 8, 8, 6, 4, 1, 0, 5, 8, 3, 5]
from random import randint
X4 = [randint(0, 9) for i in range(0, 15)]
print (X4)
>>> [6, 2, 6, 9, 5, 3, 2, 3, 3, 4, 4, 7, 4, 9, 6]
Скорость:
► НП.случайные.randint является быстрый, следовал по НП.случайные.униформа и случайные.randrange. случайные.randint является ** медленный.
► как НП.случайные.randint и НП.случайные.равномерное намного быстрее (~8 - 12 раз быстрее) чем случайная.randrange и случайные.randint .
%timeit np.random.randint(low=0, high=10, size=(15,))
>> 1.64 µs ± 7.83 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit np.random.uniform(low=0, high=10, size=(15,)).astype(int)
>> 2.15 µs ± 38.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit [randrange(10) for i in range(15)]
>> 12.9 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit [randint(0, 9) for i in range(0, 15)]
>> 20 µs ± 386 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Примечания:
1.> НП.случайные.randint генерирует случайные целые числа в течение полуинтервала [низкий, высокий).
2.> НП.случайные.униформа генерирует равномерно распределенные числа из полуинтервала [низкий, высокий).
3.> случайное.randrange(Стоп) генерирует случайное число из диапазона(запуск, остановка, шаг).
4.> случайное.randint(A, Б) возвращает случайное число n такое, что A <= П <= б.
5.> тип(тип int) определяет массив NumPy для типа данных int.
6.> Я выбрал размер = (15,). Это даст вам массив NumPy длина = 15.
Хотя многие посты демонстрируют, как добраться один случайное целое число, изначальный вопрос, как генерировать случайное целое числос (множественное число):
как я могу генерировать случайные целые числа от 0 до 9 (включительно) в Python?
Для наглядности мы продемонстрируем вам, как получить несколько случайных чисел.
Дали
>>> import random
lo = 0
hi = 10
size = 5
Код
Несколько Случайных Чисел
# A
>>> [lo + int(random.random() * (hi - lo)) for _ in range(size)]
[5, 6, 1, 3, 0]
в <!-->
# B
>>> [random.randint(lo, hi) for _ in range(size)]
[9, 7, 0, 7, 3]
в <!-->
# C
>>> [random.randrange(lo, hi) for _ in range(size)]
[8, 3, 6, 8, 7]
в <!-->
# D
>>> lst = list(range(lo, hi))
>>> random.shuffle(lst)
>>> [lst[i] for i in range(size)]
[6, 8, 2, 5, 1]
в <!-->
# E
>>> [random.choice(range(lo, hi)) for _ in range(size)]
[2, 1, 6, 9, 5]
Образец случайных чисел
# F
>>> random.choices(range(lo, hi), k=size)
[3, 2, 0, 8, 2]
в <!-->
# G
>>> random.sample(range(lo, hi), k=size)
[4, 5, 1, 2, 3]
Подробности
Некоторые посты демонстрируют, как изначально создать несколько случайных чисел.<суп>1</суп> вот несколько вариантов, которые рассматривают подразумеваемый вопрос:
случайная.случайный
возвращает случайное поплавок в диапазон[0.0, 1.0)`случайная.randint
возвращает случайное целое число Н
такие, что &Л;= П <= б
случайная.randrange
псевдоним для randint(A, Б+1)
случайная.выбор
возвращает случайный элемент из непустой последовательностислучайная.выбор
Выбор, возвращает " к " от населения (с заменой, питон 3.6+)случайная.образца
уникальный выбор, возвращает " к " от населения (без замены):<суп>2</SUP и ГТ;См. также Р. Hettinger'ы [поговорить][12] на лязг и сглаживания, используя примеры из случайных
модуль.
Вот сравнение некоторых случайных функций в стандартной библиотеке и NumPy:
| | random | numpy.random |
|-|-----------------------|----------------------------------|
|A| random() | random() |
|B| randint(low, high) | randint(low, high) |
|C| randrange(low, high) | randint(low, high) |
|D| shuffle(seq) | shuffle(seq) |
|E| choice(seq) | choice(seq) |
|F| choices(seq, k) | choice(seq, size) |
|G| sample(seq, k) | choice(seq, size, replace=False) |
Вы также можете быстро конвертировать один из многих дистрибутивы в numpy для выборки случайных чисел&.ЛТ;суп>3</SUP и ГТ;
Примеры
>>> np.random.normal(loc=5, scale=10, size=size).astype(int)
array([17, 10, 3, 1, 16])
>>> np.random.poisson(lam=1, size=size).astype(int)
array([1, 3, 0, 2, 0])
>>> np.random.lognormal(mean=0.0, sigma=1.0, size=size).astype(int)
array([1, 3, 1, 5, 1])
<суб><суп>1</SUP-серфинг>а именно @Джон Лоуренс Aspden, @Т Мухаммед, @SiddTheKid, @user14372, @zangw, и соавт.</суб> <суб><суп>2</суп>@Прашант упоминает этот модуль показывает одно целое.</суб> <суб><суп>3</суп>продемонстрирована Satpathy @Сиддхарт</суб>
>>> import random
>>> random.randrange(10)
3
>>> random.randrange(10)
1
Чтобы получить список из десяти образцов:
>>> [random.randrange(10) for x in range(10)]
[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]
Генерации случайных чисел между 0 и 9.
import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)
Выход:
[4 8 0 4 9 6 9 9 0 7]
Лучший способ заключается в использовании случайной функции импорт
import random
print(random.sample(range(10), 10))
или без каких-либо импорт библиотеки:
n={}
for i in range(10):
n[i]=i
for p in range(10):
print(n.popitem()[1])
здесь popitems удаляет и возвращает произвольное значение из словаря "Н".
Это более математический подход, но он работает 100% времени:
Позвольте'говорят, что вы хотите использовать случайный.случайная функция (), чтобы генерировать число между
Aи
B`. Для этого просто выполните следующие действия:
режим num = (Б-а)*случайные.случайный() + а;`
Конечно, вы можете создать несколько номеров.
На странице документация случайные модуль:
предупреждения: псевдо-случайные генераторы данного модуля не должно быть используется в целях безопасности. Использование операционной системы.urandom() или SystemRandom если вы требуют криптографически безопасный генератор псевдослучайных чисел.
случайный.SystemRandom, который был введен в Python 2.4, является криптостойкого. Он по-прежнему доступен в Python 3.7.1, которая является текущей на момент написания статьи.
``питон
импорт строку строка.цифры '0123456789' импорт случайный случайный.SystemRandom().выбор(строка.цифр) '8' случайный.SystemRandom().выбор(строка.цифр) '1' случайный.SystemRandom().выбор(строка.цифр) '8' случайный.SystemRandom().выбор(строка.цифр) '5' ``
Вместо строка.цифры
, спектр
может быть использован в некоторых других ответов, возможно, вместе с пониманием. Смешивать и сочетать в соответствии с вашими потребностями.
У меня была лучшая удача с этим для Python 3.6
str_Key = ""
str_RandomKey = ""
for int_I in range(128):
str_Key = random.choice('0123456789')
str_RandomKey = str_RandomKey + str_Key
Просто добавить символы 'Азбука' и 'Азбука' или '^!~=-><' чтобы изменить характер бассейн, чтобы вытащить из, изменить диапазон, чтобы изменить количество генерируемых символов.