none
nombre aléatoires tirage

    Question

  • bonjour j'ai un code qui me fournit des nombre aléatoire mais je voudras éviter les doublons

    je pense qu'il devrait comparer la sortie avec la précédente mais là je sais pas faire merci de m'aider

    vendredi 9 septembre 2016 09:22

Réponses

  • ok. tout d'abord petite amélioration au passage pour éviter des opérations inutiles de parsing et votre variable b n'est alors plus nécessaire.

    var nombreAleatoire =   rnd.Next(1, 6);
    label1.Text = "  " + nombreAleatoire.ToString();
    comboBox1.SelectedIndex = nombreAleatoire;

    Vu votre code, je suppose que vous souhaitez tirer 10 chiffres et les afficher dans 10 textboxes, comboboxes et une image dans 10 pictureboxes. Je suppose aussi que les contrôles sont déjà présents sur votre form (et que les combobox contiennent déjà des valeurs) et ne sont donc pas ajoutés dynamiquement (ce qui serait mieux)

            private void button1_Click(object sender, EventArgs e)
            {
    // Defini la liste des controles pour faciliter l'usage dans la boucle
    var labels = new List<Label>() { label1, label2 ...};
    var comboboxes = new List<Combobox>() { combobox1, combobox2, ...};
    var pictureBoxes = new List<PictureBox>() { pictureBox1, pictureBox2, ...};
    
                //creation + affichage numero aleatoir
                int nombreAleatoire = -1;
                Random rnd = new Random(DateTime.Now.Millisecond);
                for (int i = 0; i < 10; i++)
                {
    nombreAleatoire = rnd.Next(1, 6);
                    labels[i].Text = "  " + nombreAleatoire.ToString());
                    comboboxes[i].SelectedIndex = nombreAleatoire;
                    
                    switch (nombreAleatoire)
                    {
                        case 1:
                            pictureBoxe[i].Image = Properties.Resources.ail;
                            break;
                        case 3:
                            pictureBoxe[i].Image = Properties.Resources.artichaud;
                            break;
                        case 4:
                            pictureBoxe[i].Image = Properties.Resources.aubergine;
                            break;
                        case 5:
                            pictureBoxe[i].Image = Properties.Resources.betteraverouge;
                            break;
                        case 6:
                            pictureBoxe[i].Image = Properties.Resources.blette;
                            break;
                        case 2:
                            pictureBoxe[i].Image = Properties.Resources.carotte;
                            break;
                    }
                }


    • Modifié V HELLIN vendredi 9 septembre 2016 11:13 correction code
    • Marqué comme réponse SIMONGEORGES vendredi 9 septembre 2016 14:47
    vendredi 9 septembre 2016 11:12

Toutes les réponses

  • Après chaque tirage et avant d'ajouter le nouveau chiffre dans la liste des numéros déjà tirés, vous parcourez la liste pour vous assurer que le chiffre obtenu par le tirage ne s'y trouve pas. Tant qu'il s'y trouve, vous tirez un numéro, s'il ne s'y trouve pas, vous l'ajouter à la liste.

    Ceci est l'idée pour vous mettre sur une piste de solution. Si vous voulez du code C# qui illustre cela, reproduisez votre propre code et je veux bien le compléter.

    vendredi 9 septembre 2016 09:32
  • meerci beaucoup je vous transmet mon code

            private void button1_Click(object sender, EventArgs e)
            {
                //creation + affichage numero aleatoir
                int racine = DateTime.Now.Millisecond;
                Random rnd = new Random(racine);
                for (int i = 0; i < 10; i++)
                {
                    label1.Text = "  " + (rnd.Next(1, 6).ToString());
                    comboBox1.SelectedIndex = int.Parse(label1.Text);
    
                    string a = " ";
                    a = comboBox1.SelectedItem.ToString();
                    //label2.Text = a;
                    //pictureBox1.Image = Properties.Resources.fond_transparent;
                    int b = int.Parse(label1.Text);
                    //MessageBox.Show("nombre  ", b.ToString());
                    switch (b)
                    {
                        case 1:
                            pictureBox1.Image = Properties.Resources.ail;
                            break;
                        case 3:
                            pictureBox1.Image = Properties.Resources.artichaud;
                            break;
                        case 4:
                            pictureBox1.Image = Properties.Resources.aubergine;
                            break;
                           case 5:
                            pictureBox1.Image = Properties.Resources.betteraverouge;
                            break;
                        case 6:
                            pictureBox1.Image = Properties.Resources.blette;
                            break;
                        case 2:
                            pictureBox1.Image = Properties.Resources.carotte;
                            break;
    
                    }
    
    
                }
    

    vendredi 9 septembre 2016 09:43
  • ok. tout d'abord petite amélioration au passage pour éviter des opérations inutiles de parsing et votre variable b n'est alors plus nécessaire.

    var nombreAleatoire =   rnd.Next(1, 6);
    label1.Text = "  " + nombreAleatoire.ToString();
    comboBox1.SelectedIndex = nombreAleatoire;

    Vu votre code, je suppose que vous souhaitez tirer 10 chiffres et les afficher dans 10 textboxes, comboboxes et une image dans 10 pictureboxes. Je suppose aussi que les contrôles sont déjà présents sur votre form (et que les combobox contiennent déjà des valeurs) et ne sont donc pas ajoutés dynamiquement (ce qui serait mieux)

            private void button1_Click(object sender, EventArgs e)
            {
    // Defini la liste des controles pour faciliter l'usage dans la boucle
    var labels = new List<Label>() { label1, label2 ...};
    var comboboxes = new List<Combobox>() { combobox1, combobox2, ...};
    var pictureBoxes = new List<PictureBox>() { pictureBox1, pictureBox2, ...};
    
                //creation + affichage numero aleatoir
                int nombreAleatoire = -1;
                Random rnd = new Random(DateTime.Now.Millisecond);
                for (int i = 0; i < 10; i++)
                {
    nombreAleatoire = rnd.Next(1, 6);
                    labels[i].Text = "  " + nombreAleatoire.ToString());
                    comboboxes[i].SelectedIndex = nombreAleatoire;
                    
                    switch (nombreAleatoire)
                    {
                        case 1:
                            pictureBoxe[i].Image = Properties.Resources.ail;
                            break;
                        case 3:
                            pictureBoxe[i].Image = Properties.Resources.artichaud;
                            break;
                        case 4:
                            pictureBoxe[i].Image = Properties.Resources.aubergine;
                            break;
                        case 5:
                            pictureBoxe[i].Image = Properties.Resources.betteraverouge;
                            break;
                        case 6:
                            pictureBoxe[i].Image = Properties.Resources.blette;
                            break;
                        case 2:
                            pictureBoxe[i].Image = Properties.Resources.carotte;
                            break;
                    }
                }


    • Modifié V HELLIN vendredi 9 septembre 2016 11:13 correction code
    • Marqué comme réponse SIMONGEORGES vendredi 9 septembre 2016 14:47
    vendredi 9 septembre 2016 11:12