Как генерировать случайное число с определенной длиной в Python

Позвольте говорят, что мне нужны 3 числа цифры, таким образом, это было бы что-то как:

>>> random(3)
563

or

>>> random(5)
26748
>> random(2)
56
89
задан Arty 20 April 2010 в 07:38
поделиться

3 ответа

Чтобы получить случайное трехзначное число:

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
156
ответ дан 24 November 2019 в 07:15
поделиться

Считается ли 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) .

5
ответ дан 24 November 2019 в 07:15
поделиться

Вы можете написать себе небольшую функцию, чтобы делать то, что вы хотите:

import random
def randomDigits(digits):
    lower = 10**(digits-1)
    upper = 10**digits - 1
    return random.randint(lower, upper)

В основном, 10 ** (цифры-1) дает вам наименьшую {цифру } -цифровое число, а 10 ** цифр - 1 дает вам наибольшее {цифра} -значное число (которое оказывается наименьшим {цифра + 1} -значное число минус 1!). Затем мы просто берем случайное целое число из этого диапазона.

3
ответ дан 24 November 2019 в 07:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: