Позвольте говорят, что мне нужны 3 числа цифры, таким образом, это было бы что-то как:
>>> random(3)
563
or
>>> random(5)
26748
>> random(2)
56
Чтобы получить случайное трехзначное число:
from random import randint
randint(100, 999) # randint is inclusive at both ends
(при условии, что вы действительно имели в виду три цифры, а не «до трех цифр».)
Чтобы использовать произвольное количество цифр:
from random import randint
def random_with_N_digits(n):
range_start = 10**(n-1)
range_end = (10**n)-1
return randint(range_start, range_end)
print random_with_N_digits(2)
print random_with_N_digits(3)
print random_with_N_digits(4)
Вывод:
33
124
5127
Считается ли 0 возможной первой цифрой? В таком случае вам понадобится random.randint (0,10 ** n-1)
. Если нет, random.randint (10 ** (n-1), 10 ** n-1)
. А если ноль никогда не разрешен, то вам придется явно отклонять числа с нулем в них или рисовать n
random.randint (1,9)
чисел.
Кроме того: интересно, что randint (a, b)
использует несколько непифоническое «индексирование» для получения случайного числа a <= n <= b
. Можно было ожидать, что он будет работать как range
и выдавать случайное число a <= n . (Обратите внимание на закрытый верхний интервал.)
Учитывая ответы в комментариях о randrange
, обратите внимание, что их можно заменить очистителем random.randrange (0,10 ** n)
, random.randrange (10 ** (n-1), 10 ** n)
и random.randrange (1,10)
.
Вы можете написать себе небольшую функцию, чтобы делать то, что вы хотите:
import random
def randomDigits(digits):
lower = 10**(digits-1)
upper = 10**digits - 1
return random.randint(lower, upper)
В основном, 10 ** (цифры-1)
дает вам наименьшую {цифру } -цифровое число, а 10 ** цифр - 1
дает вам наибольшее {цифра} -значное число (которое оказывается наименьшим {цифра + 1} -значное число минус 1!). Затем мы просто берем случайное целое число из этого диапазона.