Random - Loterias







     Definimos el rango de los números que deseamos obtener, una matriz para almacenarlos y un objeto Random que recibirá los mensajes NextDouble.

     Obtenemos el siguiente número aleatorio y verificamos si ya existe en la matriz, en cuyo  caso lo desechamos y volvemos a obtener otro. Este proceso lo repetimos hasta haber generado todos los números solicitados.

     La sentencia for externa define cuántos números se van a generar. Cuando se genera un número se almacena en la siguiente posición de la matriz. Después, la sentencia for interna compara el último número generado con todos los anteriormente generados. Si ya existe, se decrementa el índice i de la matriz para que cuando sea incrementado de nuevo por el for externo apunte al elemento repetido y sea sobrescrito por el siguiente número generado.

     Una vez obtenidos todos los números, ordenamos la matriz y la visualizamos.

    Que se puede hacer escribiendo menos código.  De eso estoy absolutamente seguro.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Loteria
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void toolStripMenuItem3_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void primitivaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            {
                int i, k, numeroMaximo = 49, numeroMinimo = 1;
                int[] n = new int[6];
                // Crear un objeto de la clase Random
                Random rnd = new Random();
                for (i = 0; i < n.Length; i++)
                {
                    // Obtener un número aleatorio
                    n[i] = (int)((numeroMaximo - numeroMinimo + 1) * rnd.NextDouble() + numeroMinimo);
                    // Verificar si ya existe el último número obtenido
                    for (k = 0; k < i; k++)
                        if (n[k] == n[i])    // ya existe
                        {
                            i--;            // i sera incrementada por el for externo
                            break;          // salir de este for
                        }
                }
                // Ordenar la matriz
                Array.Sort(n);
                //  Mostrar la matriz
                for (i = 0; i < n.Length; i++)
                {
                    textBox1.Text += (n[i] + "  .  ");
                }
            }
        }




        private void elGordoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            {
                {
                    int i, k, numeroMaximo = 54, numeroMinimo = 1;
                    int[] n = new int[5];
                    // Crear un objeto de la clase Random
                    Random rnd = new Random();
                    for (i = 0; i < n.Length; i++)
                    {
                        // Obtener un número aleatorio
                        n[i] = (int)((numeroMaximo - numeroMinimo + 1) * rnd.NextDouble() + numeroMinimo);

                        // Verificar si ya existe el último número obtenido
                        for (k = 0; k < i; k++)
                            if (n[k] == n[i])    // ya existe
                            {
                                i--;            // i sera incrementada por el for externo
                                break;          // salir de este for
                            }
                    }
                    // Ordenar la matriz
                    Array.Sort(n);
                    //  Mostrar la matriz
                    for (i = 0; i < n.Length; i++)
                    {
                        textBox3.Text += (n[i] + "  .  ");
                    }
                }
            }

        }


        private void euromillonesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            {
                {
                    int i, k, numeroMaximo = 50, numeroMinimo = 1;
                    int[] n = new int[5];
                    // Crear un objeto de la clase Random
                    Random rnd = new Random();
                    for (i = 0; i < n.Length; i++)
                    {
                        // Obtener un número aleatorio
                        n[i] = (int)((numeroMaximo - numeroMinimo + 1) * rnd.NextDouble() + numeroMinimo);
                        // Verificar si ya existe el último número obtenido
                        for (k = 0; k < i; k++)
                            if (n[k] == n[i])    // ya existe
                            {
                                i--;            // i sera incrementada por el for externo
                                break;          // salir de este for
                            }
                    }
                    // Ordenar la matriz
                    Array.Sort(n);
                    //  Mostrar la matriz
                    for (i = 0; i < n.Length; i++)
                    {
                        textBox5.Text += (n[i] + "  .  ");
                    }
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            System.Media.SystemSounds.Beep.Play();
            textBox1.Text = (" ");
            textBox3.Text = (" ");
            textBox4.Text = (" ");
            textBox5.Text = (" ");
            textBox6.Text = (" ");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int n = 0;
            Random rnd = new Random();
            n = rnd.Next(0, 10);
            {
                textBox4.Text = (n + " ");
            }
        }


        private void button3_Click(object sender, EventArgs e)
        {

            {
                {
                    int i, k, numeroMaximo = 11, numeroMinimo = 1;
                    int[] n = new int[2];
                    // Crear un objeto de la clase Random
                    Random rnd = new Random();
                    for (i = 0; i < n.Length; i++)
                    {
                        // Obtener un número aleatorio
                        n[i] = (int)((numeroMaximo - numeroMinimo + 1) * rnd.NextDouble() + numeroMinimo);

                        // Verificar si ya existe el último número obtenido
                        for (k = 0; k < i; k++)
                            if (n[k] == n[i])    // ya existe
                            {
                                i--;            // i sera incrementada por el for externo
                                break;          // salir de este for
                            }
                    }
                    // Ordenar la matriz
                    Array.Sort(n);
                    //  Mostrar la matriz
                    for (i = 0; i < n.Length; i++)
                    {
                        textBox6.Text += (n[i] + "  .  ");
                    }
                }



            }

        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
         
             MessageBox.Show("(c) Enrique 02-2015 v 1.0\r\n" + "Que la suerte te acompañe");
        }

    }
}







No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.