ana no te agobies

mail@pastecode.io avatar
unknown
python
2 years ago
1.2 kB
2
Indexable
Never
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)