import numpy as np

def get_dynamic_values():
    # Simule la récupération des valeurs dynamiques.
    return np.random.normal(loc=50, scale=10)  # Valeur aléatoire avec une moyenne de 50 et un écart-type de 10

def update_values(values, new_value, rejected_values, threshold=10):
    if len(values) == 0:
        return [new_value], rejected_values

    old_mean = np.mean(values)  # Calcul de la moyenne actuelle
    print(f"Ancienne moyenne: {old_mean}")

    if new_value in rejected_values:
        # Si la nouvelle valeur a été rejetée précédemment, l'accepter maintenant
        values.append(new_value)
        rejected_values.remove(new_value)
        print(f"Valeur {new_value} acceptée après rejet initial")
    else:
        # Ajouter la nouvelle valeur et retirer la première valeur (si nécessaire)
        if len(values) >= 10:  # par exemple, une fenêtre de 10 valeurs
            values.pop(0)

        values.append(new_value)

        new_mean = np.mean(values)  # Calcul de la nouvelle moyenne
        print(f"Nouvelle moyenne avec la nouvelle valeur: {new_mean}")

        # Vérifier si la nouvelle valeur change significativement la moyenne
        difference = abs(new_mean - old_mean)
        print(f"Différence entre les moyennes: {difference}")

        if difference > threshold:
            # Rejeter temporairement la nouvelle valeur
            rejected_values.add(new_value)
            values.pop()  # Retirer la nouvelle valeur
            print(f"Valeur {new_value} rejetée temporairement")
        else:
            print(f"Valeur {new_value} acceptée")

    return values, rejected_values

# Tableau pour stocker les dernières valeurs
last_values = [10, 10, 10]
rejected_values = set()

# Nouvelles valeurs à recevoir
new_values = [30, 30]

for new_value in new_values:
    print(f"Nouvelle valeur récupérée: {new_value}")
    last_values, rejected_values = update_values(last_values, new_value, rejected_values)
    print(f"Valeurs mises à jour: {last_values}\n")

# Afficher le tableau final
print(f"Tableau final des valeurs: {last_values}")

