una sacar obtener números numeros numero nombres lista generar generan datos crear como aleatorios aleatorio python random

sacar - Cómo generar un número aleatorio con la longitud específica en python



lista de numero aleatorios python (9)

¿0 cuenta como un primer dígito posible? Si es así, entonces necesitas random.randint(0,10**n-1) . Si no, random.randint(10**(n-1),10**n-1) . Y si cero nunca está permitido, entonces tendrá que rechazar explícitamente números con un cero en ellos, o dibujar n random.randint(1,9) .

Aparte: es interesante que randint(a,b) utilice una "indexación" no pythonic para obtener un número aleatorio a <= n <= b . Uno podría haber esperado que funcionara como range , y producir un número aleatorio a <= n < b . (Tenga en cuenta el intervalo superior cerrado.)

Dadas las respuestas en los comentarios sobre randrange , tenga en cuenta que estos pueden ser reemplazados por los random.randrange(0,10**n) , random.randrange(10**(n-1),10**n) y random.randrange(1,10) .

Digamos que necesito un número de 3 dígitos, por lo que sería algo así como:

>>> random(3) 563 or >>> random(5) 26748 >> random(2) 56


De la documentación oficial , ¿no parece que el método sample () es apropiado para este propósito?

import random def random_digits(n): num = range(0, 10) lst = random.sample(num, n) print str(lst).strip(''[]'')

Salida:

>>>random_digits(5) 2, 5, 1, 0, 4


Para obtener un número aleatorio de 3 dígitos:

from random import randint randint(100, 999) # randint is inclusive at both ends

(suponiendo que realmente quiso decir tres dígitos, en lugar de "hasta tres dígitos").

Para usar una cantidad arbitraria de dígitos:

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)

Salida:

33 124 5127


Puede crear una función que consuma una lista de int, transforma en cadena para concatenar y lanzar do int nuevamente, algo como esto:

import random def generate_random_number(length): return int(''''.join([str(random.randint(0,10)) for _ in range(length)]))


Puedes escribir una pequeña función para hacer lo que quieras:

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

Básicamente, 10**(digits-1) le da el número más pequeño de {dígitos} -dígitos, y 10**digits - 1 le da el número más grande de {dígitos} -dígitos (que es el más pequeño {dígito + 1} -número de dígitos menos 1!). Entonces tomamos un entero aleatorio de ese rango.


Realmente me gustó la respuesta de RichieHindle, sin embargo, me gustó la pregunta como ejercicio. Aquí hay una implementación de fuerza bruta usando cadenas :)

import random first = random.randint(1,9) first = str(first) n = 5 nrs = [str(random.randrange(10)) for i in range(n-1)] for i in range(len(nrs)) : first += str(nrs[i]) print str(first)


Si lo quiere como una cadena (por ejemplo, un número de teléfono de 10 dígitos) puede usar esto:

n = 10 ''''.join(["%s" % randint(0, 9) for num in range(0, n)])


Si necesita un número de 3 dígitos y desea que 001-099 sean números válidos, debe usar randrange / randint ya que es más rápido que las alternativas. Simplemente agregue los ceros precedentes necesarios al convertir a una cadena.

import random num = random.randrange(1, 10**3) num_with_zeros = ''{:03}''.format(num)

Alternativamente, si no quiere guardar el número aleatorio como un int, puede hacerlo como un oneliner:

''{:03}''.format(random.randrange(1, 10**3))

Python 3.6+ only oneliner:

f''{random.randrange(1, 10**3):03}''

Ejemplos de salidas de lo anterior son:

  • ''026''
  • ''255''
  • ''512''

Si no quieres memorizar todos los diferentes comandos aparentemente aleatorios (como yo), siempre puedes usar:

import random Numbers = range(1, 10) RandomNumber = random.choice(Numbers) print(RandomNumber) #returns a number