import numpy as np
def predire_scores(scores_passes): """ Prédit deux scores finaux basés sur les 6 dernières confrontations.
:param scores_passes: Liste des 6 derniers scores sous forme de tuples (score_A, score_B)
:return: Texte formaté avec deux scores prédits
"""
if len(scores_passes) != 6:
raise ValueError("Il faut exactement 6 matchs passés pour générer une prédiction.")
# Poids pour donner plus d'importance aux matchs récents
poids = np.array([1, 2, 3, 4, 5, 6]) / sum(range(1, 7))
# Extraction des scores
scores_A = np.array([score[0] for score in scores_passes])
scores_B = np.array([score[1] for score in scores_passes])
# Moyenne pondérée des buts marqués par chaque équipe
moyenne_A = np.sum(scores_A * poids)
moyenne_B = np.sum(scores_B * poids)
# Calcul de l'écart-type (mesure de la variabilité des scores)
std_A = np.sqrt(np.sum(poids * (scores_A - moyenne_A) ** 2))
std_B = np.sqrt(np.sum(poids * (scores_B - moyenne_B) ** 2))
# Générer deux scores prédictifs avec variation aléatoire contrôlée
predictions = []
for _ in range(2):
pred_A = round(np.random.normal(moyenne_A, std_A / 2)) # Réduction de la variabilité
pred_B = round(np.random.normal(moyenne_B, std_B / 2))
# Empêcher les scores négatifs
pred_A = max(0, pred_A)
pred_B = max(0, pred_B)
predictions.append(f"{pred_A}-{pred_B}")
# Formatage du message
message = f"Deux scores finaux prédits :\nScore final 1 : {predictions[0]}\nScore final 2 : {predictions[1]}"
return message
scores_historique = [(1, 0), (0, 0), (2, 0), (1, 1), (0, 1), (0, 0)] resultat = predire_scores(scores_historique)
print(resultat)