[CSharp] probleme avec Random

Résolu
Bonjour,

j'ai crée une classe nombreAleatoire qui contient une methode qui retourne un nombre aleatoire entier:
 public int Nb()
        {
            Random RandomNumber = new Random();

            return RandomNumber.Next(1,10);
        }


dans la classe main j'ai crée 3 variable: var1,var2,var3
nombreAleatoire n=new nombreAleatoire ();
int var1=n.Nb();
int var2=n.Nb();
int var3=n.Nb();


Le probleme c'est que ces 3 variables contiennent la meme valeur. Pourquoi??

Merci pour votre aide
Configuration: Windows XP
Firefox 3.5.6

5 réponses

  1. Tu peux tester ça :

    using System.Threading;

    public int Nb()
    {
    Random RandomNumber = new Random();

    return RandomNumber.Next(1, 50);
    }

    private void btn_Click(object sender, EventArgs e)
    {
    lbl01.Text = Nb().ToString();
    Thread.Sleep(1000);
    lbl02.Text = Nb().ToString();
    Thread.Sleep(1000);
    lbl03.Text = Nb().ToString();
    Thread.Sleep(1000);
    lbl04.Text = Nb().ToString();
    Thread.Sleep(1000);
    lbl05.Text = Nb().ToString();
    }
    2
    1. Bonsoir,

      Il semblerai que ce soi normal la fonction Random s'initialiserai touojours avec les meme valeur

      Cependant tres interresant car je n'avais jamais remarque sa

      il faudrait regarder le code de cette classe
      0
      1. Oui mais normalement lorsque je fais appel à la fonction Nb(), elle dois se réinitialiser non??
        0
    2. oui mais je vien d'essayer de creer une autre fonction identique

      public Form1()
      {
      InitializeComponent();
      }

      private void button1_Click(object sender, EventArgs e)
      {
      int t, r, v;
      t = Num();
      r = Num1();
      v = Num();
      textBox1.Text = r.ToString();
      textBox2.Text = t.ToString();
      textBox3.Text = v.ToString();
      }

      private int Num()
      {
      Random re = new Random();
      return re.Next(1, 10);
      }
      private int Num1()
      {
      Random re = new Random();
      return re.Next(1, 10);
      }

      et les resultat son tjrs pareil
      0
      1. oui j'ai deja essayé cela , ça marche pas!!

        j'ai meme fais:

        NombreAleatoire n;
         n= new NombreAleatoire();
                    int val1 =n.Nb();
        n = new NombreAleatoire();
                    int val2 = n.Nb();


        mais ça marche tjrs pas!!
        0
        1. Et enfin voila la solution:

          class NombreAleatoire
              {
                  Random RandomNumber = new Random(); // faut le mettre en dehors de la methode
          
                  public int Nb()
                  {
                      
          
                      return RandomNumber.Next(1,10);
                      
                  }
          
              }
          0