Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Serie de numeros aleatorios en un TextBox

Estas en el tema de Serie de numeros aleatorios en un TextBox en el foro de .NET en Foros del Web. Tal como dice el titulo, en el proyecto de loteria que tengo de tarea por nota final, pide la opcion de crear una serie de ...
  #1 (permalink)  
Antiguo 13/06/2016, 11:50
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 10 meses
Puntos: 1
Serie de numeros aleatorios en un TextBox

Tal como dice el titulo, en el proyecto de loteria que tengo de tarea por nota final, pide la opcion de crear una serie de 14 numeros al azar que no se repitan, lo primero fue relativamente facil

Código C:
Ver original
  1. private void button29_Click(object sender, EventArgs e)
  2.         {
  3.             Random r = new Random();
  4.             int tal = r.Next(1, 25);
  5.             int tal1 = r.Next(1, 25);
  6.             int tal2 = r.Next(1, 25);
  7.             int tal3 = r.Next(1, 25);
  8.             int tal4 = r.Next(1, 25);
  9.             int tal5 = r.Next(1, 25);
  10.             int tal6 = r.Next(1, 25);
  11.             int tal7 = r.Next(1, 25);
  12.             int tal8 = r.Next(1, 25);
  13.             int tal9 = r.Next(1, 25);
  14.             int tal10 = r.Next(1, 25);
  15.             int tal11 = r.Next(1, 25);
  16.             int tal12 = r.Next(1, 25);
  17.             int tal13 = r.Next(1, 25);
  18.            TxTNums.Text = TxTNums.Text + tal.ToString()+" ";
  19.            TxTNums.Text = TxTNums.Text + tal1.ToString()+" ";
  20.            TxTNums.Text = TxTNums.Text + tal2.ToString()+" ";
  21.            TxTNums.Text = TxTNums.Text + tal3.ToString()+" ";
  22.            TxTNums.Text = TxTNums.Text + tal4.ToString()+" ";
  23.            TxTNums.Text = TxTNums.Text + tal5.ToString()+" ";
  24.            TxTNums.Text = TxTNums.Text + tal6.ToString()+" ";
  25.            TxTNums.Text = TxTNums.Text + tal7.ToString()+" ";
  26.            TxTNums.Text = TxTNums.Text + tal8.ToString()+" ";
  27.            TxTNums.Text = TxTNums.Text + tal9.ToString()+" ";
  28.            TxTNums.Text = TxTNums.Text + tal10.ToString()+" ";
  29.            TxTNums.Text = TxTNums.Text + tal11.ToString()+" ";
  30.            TxTNums.Text = TxTNums.Text + tal12.ToString()+" ";
  31.            TxTNums.Text = TxTNums.Text + tal13.ToString();
  32.         }

Pero para evitar que se repitan, es otra historia.......

Investigando encontre el uso de arraylist

Código C:
Ver original
  1. public ArrayList NumerosRandom(int max)          
  2.           {      
  3.               // Crea un ArrayList para almacenar los números      
  4.               ArrayList lstNumeros = new ArrayList();              
  5.               // Ésto va a generar los números        
  6.               Random rnd = new Random();                
  7.               // Generar un numero del 1 a su máximo        
  8.               int number = rnd.Next(1,25);          
  9.               // Añadir el primero numero a la lista      
  10.               lstNumeros.Add(number);          
  11.               // ´Settear´ el numero donde comenzará a contar (para verificar si existe un numero igual)          
  12.               int count = 0;                
  13.               do                
  14.               {            
  15.                   // Generar un numero del 1 a su máximo                    
  16.                   number = rnd.Next(1,25);                  
  17.                   // Si el nuevo numero no está en la lista pues añádelo                    
  18.                   if (!lstNumeros.Contains(number))                    
  19.                   {                        
  20.                       // Añádelo                        
  21.                       lstNumeros.Add(number);                    
  22.                   }                    
  23.                   count++;                
  24.               } while (count <= 10 * max);                
  25.  
  26.               // Una vez terminado de procesar la lista y añadir los números nuevos, enviarlos              
  27.               return lstNumeros;          
  28.           }      
  29.  
  30. private void button29_Click(object sender, EventArgs e)
  31.        {
  32.  
  33.            Numeros nmr = new Numeros();
  34.            const int Total = 25;
  35.            // Aquí va el número máximo 1-9999            
  36.            ArrayList lstNumeros =nmr.NumerosRandom(Total);            
  37.            for (int i = 0; i < lstNumeros.Count; i++)            
  38.            {                
  39.                TxTNums.Text = lstNumeros[i].ToString()+“ ” ;
  40.  
  41.            }
En si el problem es: "Numeros nmr = new Numeros();" no se que funcion cumple, como no existe en el array y esta definido como clase lo encontre raro asi que lo saque el boton quedo asi
Código C:
Ver original
  1. private void button29_Click(object sender, EventArgs e)
  2.        {
  3.  
  4.  
  5.            const int Total = 25;
  6.            // Aquí va el número máximo 1-9999            
  7.            ArrayList lstNumeros = NumerosRandom(Total);            
  8.            for (int i = 0; i < lstNumeros.Count; i++)            
  9.            {                
  10.                TxTNums.Text = lstNumeros[i].ToString()+“ ” ;
  11.  
  12.            }

Y solo muestra un numero en el textbox, ojala no sea mucha molestia el preguntar como poder escribir 14 numeros aleatorios , en el rango de 1 a 25
  #2 (permalink)  
Antiguo 13/06/2016, 13:13
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Serie de numeros aleatorios en un TextBox

Y si en lugar de usar 14 variables usases una lista? Además de que te ayudaría muchísimo a encontrar la solución al problema, es muy feo el como estás resolviéndolo ahora mismo, es una solución muy poco mantenible.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 13/06/2016, 13:24
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Respuesta: Serie de numeros aleatorios en un TextBox

Buenas compañero,

Concatena los resultados.... No los guardes tal cual.


private void button29_Click(object sender, EventArgs e)
{
const int Total = 25;
// Aquí va el número máximo 1-9999
ArrayList lstNumeros = NumerosRandom(Total);
for (int i = 0; i < lstNumeros.Count; i++)
{
TxTNums.Text = lstNumeros[i].ToString()+“ ” ;
}


Un saludo!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #4 (permalink)  
Antiguo 13/06/2016, 14:58
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Serie de numeros aleatorios en un TextBox

Es más óptimo trabajar con un StringBuilder para concatenar dentro del for y al final hacer el ToString al textbox ;)
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 13/06/2016, 15:04
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Serie de numeros aleatorios en un TextBox

Cita:
Iniciado por Drako_18 Ver Mensaje
Buenas compañero,

Concatena los resultados.... No los guardes tal cual.


private void button29_Click(object sender, EventArgs e)
{
const int Total = 25;
// Aquí va el número máximo 1-9999
ArrayList lstNumeros = NumerosRandom(Total);
for (int i = 0; i < lstNumeros.Count; i++)
{
TxTNums.Text = lstNumeros[i].ToString()+“ ” ;
}


Un saludo!!
a Malenko: esa es la idea, cambiar el mar que hize arriba, canbaindolo por lo que puse abajo.
para Drako:
Y como concateno resultados?, pusiste lo mismos que habia puesto en el boton sin cambio alguno , lamento preguntar tanto, cuando tengo trabajos de programar me pongo nervioso
  #6 (permalink)  
Antiguo 13/06/2016, 23:02
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Serie de numeros aleatorios en un TextBox

Cita:
Iniciado por jmfmagnum Ver Mensaje
cuando tengo trabajos de programar me pongo nervioso
Efectivamente, es tu trabajo programarlos. Ya se te han dado herramientas para que pudieras hacerlo tu mismo y esperamos que así sea. Cuando hayas aplicado cambios respecto a tu código original, subelo y entonces volveremos a examinarlo. Lo que no vamos a hacer es programar tus tareas porque entonces no vas a aprender nada.

Así pues, quedamos a la espera de que apliques los cambios.
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 14/06/2016, 03:26
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Respuesta: Serie de numeros aleatorios en un TextBox

Buenas compañero,

Estoy con Malenko, concatenar en XX lenguaje, lo vas a encontrar con una simple búsqueda en Google, te animo a hacerla!!! ;)


¡Saludos!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #8 (permalink)  
Antiguo 14/06/2016, 19:00
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Serie de numeros aleatorios en un TextBox

bueno ahi lo encontre
Código C++:
Ver original
  1. private void button29_Click(object sender, EventArgs e)
  2.         {
  3.             Random rnumero = new Random();
  4.      
  5.             List<int> numeros = new List<int>();
  6.             while (numeros.Count < 14)
  7.             {
  8.                 int num = rnumero.Next(1, 25);
  9.                 if (!numeros.Any(x => x == num))//revisa que el numero no se repita
  10.                 {
  11.                     numeros.Add(num);
  12.                     TxTNums.Text = TxTNums.Text + " " + num.ToString();
  13.                 }
  14.  
  15.             }
  16.         }

lamento la molestia, ahi encontre la solucion , gracias a ambos por su tiempo, este tema esta solucionado
  #9 (permalink)  
Antiguo 14/06/2016, 22:58
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Serie de numeros aleatorios en un TextBox

La solución esta bastante bien, lo único que cambiaría sería la asignación a TxTNums al salir del bucle while. Es muchísimo más óptimo trabajar en el while con un StringBuilder dentro del while y al terminar asignarle el resultado al TxtNums. En un entorno profesional el cambio que te comento sería "obligatorio" por temas de rendimiento, pero siendo una solución para un ejercicio de clase, si comparas tu último código con el primero que pusiste verás que hay un abismo. Muy bien :)
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: numeros, serie, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.