none
Generar numeros aleatorios ?? RRS feed

  • Pregunta

  • Hola...

    Como puedo hacer para generar dos numeros aleatorios diferentes en el intervalo [0.0 , 1.0] ???

    escribi este codigo pero  genera el mismo numero:

     

    public partial class Form1 : Form
        {

            partial void Randomize(double Number);

        
            public Form1()
            {
                InitializeComponent();
            }

     private void button1_Click(object sender, EventArgs e)
            {
             

                Number = dateTimePicker1.Value.Millisecond;

                Randomize(Number);
                Random mixed = new Random();
                nau = mixed.NextDouble();

               textBox1.Text=nau.ToString();

     

                Randomize(Number);
                Random mixed1 = new Random();
                nau2 = mixed1.NextDouble();

               textBox2.Text=nau2.ToString();
    }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA
    viernes, 28 de enero de 2011 3:07

Respuestas

  • Tu problema es que antes de generar el segundo número has vuelto a llamar a Randomize(Number), con lo que se te inicializa de nuevo al mismo valor inicial el generador de números aleatorios. Quita esta segunda llamada, y llama todo el rato a NextDouble sobre el mismo Random (no sobre uno nuevo). De esta forma irá generando números distintos.

     

    viernes, 28 de enero de 2011 8:06
    Moderador
  • Se te ha olvidado la otra parte de la respuesta, la de que uses el mismo generador y no dos instancias separadas (es decir, usa únicamente "mixed", no "mixed y mixed1". Hay que usar la misma instancia para que el "Next..." tenga sentido.

    public partial class Form1 : Form
    {
      public Form1()
      {
       InitializeComponent();
      }
       private void button1_Click(object sender, EventArgs e)
      {
       
       Number = DateTime.Now.Millisecond;
       Random mixed = new Random(Number);
       nau = mixed.NextDouble();
       textBox1.Text=nau.ToString();
       nau2 = mixed.NextDouble();
       textBox2.Text=nau2.ToString();
      }
    }
    

    Observa que te he quitado la llamada a Randomize, que en principio no valía para nada (salvo que compiles junto con otro fuente que defina el método parcial), te he puesto la semilla en el constructor del Random, y los dos números se generan con la misma instancia. Con esto te debería funcionar.

     

    viernes, 28 de enero de 2011 12:21
    Moderador

Todas las respuestas

  • random r = new random();
    
    double aleatorio = r.NextDouble();
    
    

    viernes, 28 de enero de 2011 3:33
  • Tu problema es que antes de generar el segundo número has vuelto a llamar a Randomize(Number), con lo que se te inicializa de nuevo al mismo valor inicial el generador de números aleatorios. Quita esta segunda llamada, y llama todo el rato a NextDouble sobre el mismo Random (no sobre uno nuevo). De esta forma irá generando números distintos.

     

    viernes, 28 de enero de 2011 8:06
    Moderador
  • Hola Alberto...

    Quite  la segunda inicializacion del generador de numeros y aun asi ...me devuelve numeros identicos ???

    code snipe:

    public partial class Form1 : Form
        {

            partial void Randomize(double Number);

        
            public Form1()
            {
                InitializeComponent();
            }

     private void button1_Click(object sender, EventArgs e)
            {
             
                Number = dateTimePicker1.Value.Millisecond;

                Randomize(Number);

                Random mixed = new Random();
                nau = mixed.NextDouble();

                textBox1.Text=nau.ToString();

                Random mixed1 = new Random();

                nau2 = mixed1.NextDouble();

                textBox2.Text=nau2.ToString();
    }

     


    EFRAIN MEJIAS C VALENCIA - VENEZUELA
    viernes, 28 de enero de 2011 11:48
  • Se te ha olvidado la otra parte de la respuesta, la de que uses el mismo generador y no dos instancias separadas (es decir, usa únicamente "mixed", no "mixed y mixed1". Hay que usar la misma instancia para que el "Next..." tenga sentido.

    public partial class Form1 : Form
    {
      public Form1()
      {
       InitializeComponent();
      }
       private void button1_Click(object sender, EventArgs e)
      {
       
       Number = DateTime.Now.Millisecond;
       Random mixed = new Random(Number);
       nau = mixed.NextDouble();
       textBox1.Text=nau.ToString();
       nau2 = mixed.NextDouble();
       textBox2.Text=nau2.ToString();
      }
    }
    

    Observa que te he quitado la llamada a Randomize, que en principio no valía para nada (salvo que compiles junto con otro fuente que defina el método parcial), te he puesto la semilla en el constructor del Random, y los dos números se generan con la misma instancia. Con esto te debería funcionar.

     

    viernes, 28 de enero de 2011 12:21
    Moderador