public double[] CalculProbas() { // http://members.ozemail.com.au/~dekker/robot.pdf double[] probas = new double[NbEntrees]; Random rnd = new Random(); // commence par classer les valeurs double vx = Valeurs.Min(); double vz = Valeurs.Max(); // calcul du paramètre q double[] q = new double[NbEntrees]; for (int j = 0; j < Valeurs.Length; j++) { q[j] = (0.03 + Valeurs[j] - vx) / (0.03 + vz - vx); q[j] = q[j] * q[j]; } // calcul des probas double denominateur = q.Sum(); for (int j = 0; j < NbEntrees; j++) { probas[j] = q[j] / denominateur; } Helper.AfficherVecteur(probas, "Probas:"); return(probas); }
public Carte this[Couleurs col, Valeurs val] { get { Carte c = null; for (int i = 0; i < _mainDeck.Count; i++) { if (_mainDeck[i].Couleur == col && _mainDeck[i].Valeur == val) { c = _mainDeck[i]; _mainDeck.Remove(c); } } return(c); } set { Carte c = null; foreach (Carte carte in _mainDeck) { if (carte.Couleur == col && carte.Valeur == val) { c = carte; } } if (c is null) { _mainDeck.Add(new Carte() { Couleur = col, Valeur = val }); } } }
static void Main(string[] args) { // impossible de faire : int as = 24; car le nom donné à la variable est un mot dit réservé. // 2 solutions : // Bonne pratique : changer le nom ou du moins sa case. int As = 24; // Mauvaise pratique : conserver le nom, mais retiré la protection des mots réservé avec un @ int @as = 24; // Il en va de même pour les enums Valeurs test = Valeurs.@as; }
/// <summary> /// Permet de formater une requête SQL en injectant de manière sécurisée les valeurs de ses parties variables /// </summary> /// <param name="Requete">Requête SQL</param> /// <param name="Valeurs">Valeurs des parties variables de la requête</param> /// <returns>Requête SQL après injection</returns> public static string FormaterEnSql(string Requete, params object[] Valeurs) { try { return(string.Format(Requete, Valeurs.Select(Valeur => ValeurEnSql(Valeur)).ToArray())); } catch (Exception Erreur) { System.Diagnostics.Debug.WriteLine(string.Format( "\nMyDB.FormaterEnSql({0}{1}) a échoué :\n{2}\n", Requete, string.Join("", Valeurs.Select(Valeur => string.Format(", {0}", Valeur))), Erreur.Message)); return(""); } }
public AttributVM(Attribut attribut) { Attribut = attribut; AddValeur = new RelayCommand(() => { if (Pere != null) { if (SelectedValeurPere == null) { return; } Attribut.Valeurs.Add(new Valeur() { Pere = SelectedValeurPere }); } else { Attribut.Valeurs.Add(new Valeur()); } IoCContainer.Get <ModelContainer>().SaveChanges(); OnPropertyChanged(nameof(Valeurs)); OnPropertyChanged(nameof(SelectedValeur)); }); DeleteValeur = new RelayCommand(() => { if (SelectedValeur == null) { return; } Attribut.Valeurs.Remove(SelectedValeur.Valeur); IoCContainer.Get <ModelContainer>().SaveChanges(); OnPropertyChanged(nameof(Valeurs)); SelectedValeur = Valeurs.Last(); OnPropertyChanged(nameof(SelectedValeur)); }); }
/// <summary> /// Constructeur par défaut /// </summary> public GMBD() { m_BD = new MyDB("iziel_connector", "wJ9VFDrH", "iziel_warhammer", "mysql-iziel.alwaysdata.net"); m_BD.SurErreur += (ConnexionEmettrice, MethodeEmettrice, RequeteSql, Valeurs, MessageErreur) => { System.Diagnostics.Debug.WriteLine(string.Format("\nERREUR SQL :\nMéthode : {0}\nRequête initiale : {1}\nValeurs des {2} parties variables : {3}\nRequête exécutée : {4}\nMessage d'erreur : {5}\n", MethodeEmettrice, RequeteSql, (Valeurs != null) ? Valeurs.Length : 0, ((Valeurs != null) && (Valeurs.Length >= 1)) ? "\n* " + string.Join("\n* ", Valeurs.Select((Valeur, Indice) => string.Format("Valeurs[{0}] : {1}", Indice, (Valeur != null) ? Valeur.ToString() : "NULL")).ToArray()) : string.Empty, MyDB.FormaterEnSql(RequeteSql, Valeurs), MessageErreur)); }; }
/// <summary> /// Permet d'exécuter une requête d'action /// </summary> /// <param name="Requete">Requête SQL à exécuter (doit être de type INSERT, UPDATE ou DELETE)</param> /// <param name="Valeurs">Valeurs des parties variables</param> /// <returns>Objet décrivant le résultat de l'opération</returns> public IResultatExecution Executer(string Requete, params object[] Valeurs) { string MessageErreur = string.Empty; for (int NombreEchecs = 0; NombreEchecs < 2; NombreEchecs++) { MyDB ConnexionUtilisee = null; try { // Vérification de l'état théorique de la connexion if (!EstConnecte) { throw new Exception("Pas de connexion établie au serveur MySql"); } // Vérification qu'il s'agit bien d'une requête d'action if (EstRequeteConsultation(Requete)) { throw new Exception("Une requête de consultation ne peut pas faire l'objet de la méthode MyDB.Executer()"); } // Création d'une nouvelle connexion si il y a une lecture en cours if (EstEnCoursDeLecture) { ConnexionUtilisee = new MyDB(this); if (!ConnexionUtilisee.EstConnecte) { throw new Exception("Aucune nouvelle connexion n'a pu être établie vers le serveur MySql"); } } else { ConnexionUtilisee = this; } // Création de la commande SQL MySqlCommand Commande = ConnexionUtilisee.CreerCommande(Requete, Valeurs); int NombreEnregistrementsAffectes = Commande.ExecuteNonQuery(); if (EstRequeteInsertion(Requete)) { if (ConnexionUtilisee != this) { ConnexionUtilisee.Dispose(); } return(new ResultatExecution(NombreEnregistrementsAffectes, Commande.LastInsertedId)); } else { if (ConnexionUtilisee != this) { ConnexionUtilisee.Dispose(); } return(new ResultatExecution(NombreEnregistrementsAffectes)); } } catch (Exception Erreur) { System.Diagnostics.Debug.WriteLine(string.Format( "\nMyDB.Executer({0}, {1}) a échoué :\n{2}\n", Requete, string.Join("", Valeurs.Select(Valeur => string.Format(", {0}", Valeur))), Erreur.Message)); if ((ConnexionUtilisee != null) && (ConnexionUtilisee != this)) { ConnexionUtilisee.Dispose(); } // Sauvegarde du message d'erreur au cas où il faudrait le retourner MessageErreur = Erreur.Message; // Test de l'état de connexion if ((EtatConnexionConnu != EtatConnexion.Perdu) && (!EstConnecte || TesterConnexion())) { if (SurErreur != null) { SurErreur(this, MethodeExecutantRequeteSql.Enumerer, Requete, Valeurs, Erreur.Message); } break; } // En cas de perte de connexion, on tente une fois de se reconnecter if (!SeConnecter()) { if (SurErreur != null) { SurErreur(this, MethodeExecutantRequeteSql.Enumerer, Requete, Valeurs, Erreur.Message); } break; } // En cas de réussite de la re-connexion, on boucle une seconde fois sur la tentative d'exécution de cette lecture } } return(new ResultatExecution(MessageErreur)); }