Просто обратите внимание, это псевдослучайные числа, и они не являются криптографически безопасными. Не используйте это в любом случае, когда вы не хотите, чтобы злоумышленник угадал ваши цифры. Используйте secretsмодуль для лучшего случайных чисел. Ссылка: docs.python.org/3/library/random.html
468
import random
print(random.randint(0,9))
random.randint(a, b)
Вернуть случайное целое число N такое, что a <= N <= b.
В более новых версиях Python верхняя граница кажется исключительной (т.е. randint(0,9)никогда не вернет 9). Это не отражено в онлайн-документации, но во встроенной справке.
YLY
134
Попробуй это:
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)
Это улучшит ответ и должно быть добавлено. Ответы с большей безопасностью всегда следует добавлять, если они доступны.
SudoKid
31
Выберите размер массива (в этом примере я выбрал размер 20). А затем используйте следующее:
import numpy as np
np.random.randint(10, size=(1,20))
Вы можете ожидать увидеть вывод следующей формы ( разные случайные целые числа будут возвращаться каждый раз, когда вы его запускаете; следовательно, вы можете ожидать, что целые числа в выходном массиве будут отличаться от приведенного ниже примера ).
Также полезно знать, как Numpy может генерировать случайный массив заданного размера, а не только одно случайное число. (Документы: numpy.random.randint )
jkdev
28
Попробуйте это через random.shuffle
>>>import random
>>> nums = range(10)>>> random.shuffle(nums)>>> nums
[6,3,5,4,0,1,2,9,8,7]
В случае непрерывных чисел randintили randrange, возможно, это лучший выбор, но если у вас есть несколько различных значений в последовательности (то есть a list), вы также можете использовать choice:
>>>import random
>>> values = list(range(10))>>> random.choice(values)5
choice также работает для одного элемента из не непрерывного образца:
Что если нам нужно больше чисел из последовательности?
Gunjan
Если они должны быть без замены random.sample. С заменой вы можете использовать понимание choice: например, для списка, содержащего 3 случайных значения с заменой:[choice(values) for _ in range(3)]
MSeifert
18
Хотя во многих публикациях показано, как получить одно случайное целое число, в исходном вопросе спрашивается, как получить случайное целое число s (множественное число):
Как я могу генерировать случайные целые числа от 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]
Да. Спасибо за ссылку. Но я хотел сказать, что вы могли бы улучшить свой ответ, предоставив детали, прежде чем просто заключить в кавычки две строки кода; например, по какой причине кто-то предпочел бы использовать его вместо чего-то уже встроенного. Во всяком случае, вы не обязаны.
Симон
9
>>>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]
Предупреждение: псевдослучайные генераторы этого модуля не должны использоваться в целях безопасности. Используйте os.urandom () или SystemRandom, если вам требуется криптографически безопасный генератор псевдослучайных чисел.
Вместо string.digits, rangeможет быть использован для некоторых других ответов вместе, возможно, с пониманием. Смешивать и сочетать в соответствии с вашими потребностями.
OpenTURNS позволяет не только моделировать случайные целые числа, но также определять связанное распределение с UserDefined определенным классом.
Следующее моделирует 12 результатов распределения.
import openturns as ot
points =[[i]for i in range(10)]
distribution = ot.UserDefined(points)# By default, with equal weights.for i in range(12):
x = distribution.getRealization()print(i,x)
Просто добавьте такие символы, как «ABCD» и «abcd» или «^! ~ = -> <», чтобы изменить пул символов для извлечения, измените диапазон, чтобы изменить количество генерируемых символов.
Ответы:
Пытаться:
Дополнительная информация: http://docs.python.org/library/random.html#random.randrange
источник
secrets
модуль для лучшего случайных чисел. Ссылка: docs.python.org/3/library/random.htmlВернуть случайное целое число N такое, что a <= N <= b.
Документы: https://docs.python.org/3.1/library/random.html#random.randint
источник
randint(0,9)
никогда не вернет 9). Это не отражено в онлайн-документации, но во встроенной справке.Попробуй это:
источник
Это генерирует 10 псевдослучайных чисел в диапазоне от 0 до 9 включительно.
источник
secrets
Модуль нового в Python 3.6. Это лучше, чемrandom
модуль для криптографии или безопасности.Чтобы случайным образом вывести целое число в диапазоне от 0 до 9:
Подробнее см. PEP 506 .
источник
Выберите размер массива (в этом примере я выбрал размер 20). А затем используйте следующее:
Вы можете ожидать увидеть вывод следующей формы ( разные случайные целые числа будут возвращаться каждый раз, когда вы его запускаете; следовательно, вы можете ожидать, что целые числа в выходном массиве будут отличаться от приведенного ниже примера ).
источник
Попробуйте это через
random.shuffle
источник
Я бы попробовал одно из следующего:
1.> numpy.random.randint
2.> numpy.random.uniform
3.> Случайный.
4.> random.randint
Скорость:
► np.random.randint - самый быстрый , за ним следуют np.random.uniform и random.randrange . random.randint самый медленный .
► И np.random.randint, и np.random.uniform намного быстрее (~ 8 - 12 раз быстрее), чем random.randrange и random.randint .
Ноты:
источник
%timeit
работает в вашей среде?В случае непрерывных чисел
randint
илиrandrange
, возможно, это лучший выбор, но если у вас есть несколько различных значений в последовательности (то есть alist
), вы также можете использоватьchoice
:choice
также работает для одного элемента из не непрерывного образца:Если вам это нужно, «криптографически сильный», есть также
secrets.choice
в Python 3.6 и новее:источник
random.sample
. С заменой вы можете использовать пониманиеchoice
: например, для списка, содержащего 3 случайных значения с заменой:[choice(values) for _ in range(3)]
Хотя во многих публикациях показано, как получить одно случайное целое число, в исходном вопросе спрашивается, как получить случайное целое число s (множественное число):
Для ясности здесь мы покажем, как получить несколько случайных целых чисел.
Данный
Код
Несколько случайных целых чисел
Образец случайных чисел
подробности
В некоторых публикациях показано, как генерировать несколько случайных целых чисел. 1 Вот несколько вариантов решения подразумеваемого вопроса:
random.random
возвращает случайное смещение в диапазоне[0.0, 1.0)
random.randint
возвращает случайное целое число,N
такое чтоa <= N <= b
random.randrange
псевдоним дляrandint(a, b+1)
random.shuffle
перемешивает последовательность на местеrandom.choice
возвращает случайный элемент из непустой последовательностиrandom.choices
возвращаетk
выборки из популяции (с заменой, Python 3.6+)random.sample
возвращаетсяk
уникальные выборки из популяции (без замены): 2Смотрите также Р. Хеттингер доклад о чанкинге и алиасинге с использованием примеров из
random
модуля.Вот сравнение некоторых случайных функций в стандартной библиотеке и Numpy:
Вы также можете быстро конвертировать один из многих дистрибутивов в Numpy в образец случайных целых чисел. 3
Примеры
1 А именно, @John Lawrence Aspden, @ST Mohammed, @SiddTheKid, @ user14372, @zangw, et al. 2 @prashanth упоминает этот модуль, показывая одно целое число. 3 Демонстрируется @Siddharth Satpathy
источник
если вы хотите использовать numpy, используйте следующее:
источник
Чтобы получить список из десяти образцов:
источник
Генерация случайных целых чисел от 0 до 9.
Вывод:
источник
random.sample
это еще один, который может быть использованисточник
Лучше всего использовать функцию импорта случайных
или без какого-либо импорта библиотеки:
здесь popitems удаляет и возвращает произвольное значение из словаря
n
.источник
Это скорее математический подход, но он работает 100% времени:
Допустим, вы хотите использовать
random.random()
функцию для генерации числа междуa
иb
. Для этого просто сделайте следующее:num = (b-a)*random.random() + a;
Конечно, вы можете генерировать больше чисел.
источник
Со страницы документации для случайного модуля:
random.SystemRandom , который был представлен в Python 2.4, считается криптографически безопасным . Он по-прежнему доступен в Python 3.7.1, который актуален на момент написания.
Вместо
string.digits
,range
может быть использован для некоторых других ответов вместе, возможно, с пониманием. Смешивать и сочетать в соответствии с вашими потребностями.источник
OpenTURNS позволяет не только моделировать случайные целые числа, но также определять связанное распределение с
UserDefined
определенным классом.Следующее моделирует 12 результатов распределения.
Это печатает:
Скобки там, потому что
x
этоPoint
в 1-мерном. Было бы проще сгенерировать 12 результатов за один вызовgetSample
:будет производить:
Более подробная информация по этой теме находится здесь: http://openturns.github.io/openturns/master/user_manual/_generated/openturns.UserDefined.html
источник
Мне повезло больше с Python 3.6
Просто добавьте такие символы, как «ABCD» и «abcd» или «^! ~ = -> <», чтобы изменить пул символов для извлечения, измените диапазон, чтобы изменить количество генерируемых символов.
источник