ana no te agobies
unknown
python
3 years ago
1.2 kB
10
Indexable
def generar_dni_aleatorio(numero_dnis: int):
# Generamos un número aleatorio entre 100000000 y 999999999 para cada DNI
numeros = np.random.randint(100000000, 999999999, size=numero_dnis)
# Calculamos la letra del DNI a partir del número generado
letras = "TRWAGMYFPDXBNJZSQVHLCKE"
restos = numeros % 23
letra = [letras[valor] for valor in restos]
# Creamos una lista de DNI como cadenas de 8 dígitos y una letra
dnis = [f"{numero}{letra}" for numero, letra in zip(numeros.astype(str), letra)]
# Convertimos la lista de DNI en un conjunto para eliminar los DNI repetidos
dnis_unicos = set(dnis)
# Si el número de DNI únicos es menor que el número de DNI solicitado, volvemos a generar DNI
# hasta que el conjunto tenga el número de elementos solicitado
while len(dnis_unicos) < numero_dnis:
numeros = np.random.randint(100000000, 999999999, size=numero_dnis)
restos = numeros % 23
letra = [letras[valor] for valor in restos]
dnis = [f"{numero}{letra}" for numero, letra in zip(numeros.astype(str), letra)]
dnis_unicos.update(dnis)
# Devolvemos la lista de DNI únicos
return list(dnis_unicos)
Editor is loading...