import uuid
import base58
import qrcode

import random



def generate_qrcode():
    for i in range ( 1500):
        unique_id = base58.b58encode(uuid.uuid4().bytes).decode()

        print(f"{i} : {unique_id}")

        qrcode.make(unique_id).save(f"qrcode_{i}.png")


# Simuler les données : chaque visiteur a un nombre de scans (de 1 à 24)
nb_visiteurs = 1500
scans_par_visiteur = {i: random.randint(1, 24) for i in range(1, nb_visiteurs + 1)}


def tirage_pondéré(scans_par_visiteur, nb_gagnants):
    # Créer la "liste pondérée" avec un numéro répété selon le nombre de scans
    pool = []
    for visiteur, scans in scans_par_visiteur.items():
        pool.extend([visiteur] * scans)  # Ajoute le visiteur autant de fois que ses scans

    gagnants = {}
    while len(gagnants) < nb_gagnants and pool:
        gagnant = random.choice(pool)  # Tire au sort un numéro
        gagnants[gagnant] = scans_par_visiteur[gagnant]  # Associe au nombre d'heures badgées
        pool = [x for x in pool if x != gagnant]  # Retire toutes ses occurrences

    return gagnants


'''# Effectuer le tirage de 100 gagnants
gagnants = tirage_pondéré(scans_par_visiteur, 10)

# Afficher les gagnants avec leur nombre d'heures badgées
print("Liste des gagnants :")
for numero, heures in gagnants.items():
    print(f"- Passeport {numero} (Présent {heures} heures)")'''


generate_qrcode_partenaire()