elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda Numeros aletorios de la loteria.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Numeros aletorios de la loteria.  (Leído 2,776 veces)
pedro_75

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Duda Numeros aletorios de la loteria.
« en: 25 Noviembre 2014, 23:50 pm »

Hola buenas tardes.

En principio quiero hacer un programa que genere los numeros aletorios de la superonce, les explicare en que consiste.

El Super Once es un juego de lotería de la ONCE formado por una matriz de 80 números, numerados del 1 al 80, y consiste en elegir entre 5 y 11 números de la matriz siendo su orden indiferente.

Previa celebración de un sorteo se obtendrá una combinación ganadora formada por 20 números de los 80.

Una apuesta está integrada por una combinación de números de entre las aceptadas en el producto más el precio pagado para dicha combinación. Existen 7 tipos de apuestas en función de la cantidad de números elegidos, 11, 10, 9, 8, 7, 6 ó 5. Con estos elementos se podrá optar a los premios que correspondan, en función del al tipo de apuesta, el importe en euros apostado y el número de aciertos obtenidos.




A continuación, les explicare mis dudas y planteamiento de como hacerlo

1 Los numeros estan divididos estan divididos en 8 Filas en la primera Fila esta en el rango del 1 al 10, la segunda fila del 11 al 20... Para hacer esto tengo pensando en un bucle for, con 8 variables (1 cada fila), en el se genera un numero aletorio y pasarle el valor a la variable segun el valor del incremento.

Me explico de una manera mas sencilla, Tengo 8 variables cada una representa la cantidad de numeros que habrá y pasariamos el valor generado a cada variable es decir si tenemos la variable fila1 le pasaremos el primer valor generado, el segundo valor genereda se lo pasamos a la variable fila2 asi sucesivamente hasta la octava variable.

2 Ya descrito la cantidad de numeros en cada fila, es hora de crear los numeros mi pensamiento es crear 8 bucles for y se paren con el valor de la fila, si en la primera fila es 3 se generaran 3 numeros del 1 al 10.

2.1 El programa puede generar numeros repetidos ¿ Como es posible solucionarlo?

Este es un ejemplo con una sola Fila.

Código
  1. /**
  2.  *
  3.  * @author pedro_75
  4.  */
  5.  
  6.  
  7. class numerosaletorios {
  8.  
  9. public static void main(String[] args) {
  10.  
  11.        double rango;
  12.        int numeroentero,Fila1=3;    // Este valor lo he escogido yo pero en el programa  habra un bucle que nos generara los
  13.                                                 // valores de las filas
  14.  
  15.  
  16. for (int i=0; i<Fila1; i++){
  17.  
  18.          rango = (Math.random()*(10)+1);
  19.          numeroentero = (int) rango; // en nuestro programa solo nos interesan los numeros enteros no decimales                                      
  20.          System.out.println(numeroentero);
  21.  
  22.        }
  23.    }
  24. }
  25.  

3 Existe una base de datos, con los resultados de la superonce como podria hacer un metodo o clase en el que recogiera esos datos comprobara uno por uno las posibilidades de que pueda salir.




4 Con mis estatidisticas y posibilidades,  ¿como puedo modificar la clase Random para que pueda salir mas por ejemplo el 2 que el 5 segun las posibilidades?









« Última modificación: 25 Noviembre 2014, 23:59 pm por pedro_75 » En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.182



Ver Perfil WWW
Re: Duda Numeros aletorios de la loteria.
« Respuesta #1 en: 27 Noviembre 2014, 18:13 pm »

Hmm... respondiéndote a las partes 1 y 2.

Te recomendaría trabajar con arrays.

A la hora de generar números, verifica si hay duplicados recorriendo el array antes de añadir el nuevo valor.

No tires de variables del tipo fila1, fila2, fila3... En vez de eso hazte un array fila[posición] y recórrelo con un único bucle for que te rellene el array de una tirada.

Similar a esto:
Código
  1. int fila[7];
  2. Random rand = new Random();
  3. for(int i=0; i<fila.size(); i++)
  4. {
  5. ...
  6. fila[i] = (rand.nextInt((10)+1));
  7. ...
  8. }

Para comprobar duplicados, algo del palo:
Código
  1. public boolean comprobarDuplicados(int valor)
  2. {
  3. duplicado=false;
  4. for(int i=0; i<fila.size(); i++)
  5. {
  6. if(fila[i]==valor)
  7. duplicado=true;
  8. }
  9. return duplicado;
  10. }

ALTERNATIVAMENTE, y mucho más práctico, utiliza un HashSet. (No admiten duplicados).

HashSet (Java Platform SE7):
https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html


Sobre la parte 4, yo suelo hacerlo "extendiendo" el random con condicionales y valores más altos.

Por ejemplo, generamos valores del 0 al 9, pero me interesa que salga más el 9, por decir algo.
Pasos que yo seguiría:

1.- Generar un aleatorio de 0 a 100.
2.- Asignar una parte proporcional de probabilidad a cada número con condicionales.
2.1.- Las condicionales asignarán el valor adecuado.

Ejemplo:

Quiero un 20% de posibilidades para un 9, el resto con probabilidades normales.
Si el valor aleatorio me sale entre 81 y 100, asigno el 9.
Los otros valores se reparten el resto de forma equitativa. (Approx 8).

Código
  1. if(value >= 81 && value < 100)
  2.   value = 9;
  3. else
  4.   value = value/9

Así salen más nueves que otros números.


« Última modificación: 27 Noviembre 2014, 18:35 pm por Saberuneko » En línea

pedro_75

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Duda Numeros aletorios de la loteria.
« Respuesta #2 en: 4 Diciembre 2014, 13:00 pm »

Gracias por responderme saburenko, me has solucionado muchas dudas que tenia! me pondre a ello enseguida
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda, Programa en ASM que suma 2 numeros
ASM
mit 2 23,667 Último mensaje 30 Mayo 2007, 18:32 pm
por mit
LOTERIA HELP!!
Java
kawasaki 3 4,765 Último mensaje 27 Diciembre 2008, 16:21 pm
por sapito169
Duda con operaciones con números reales
Programación C/C++
jam3s 2 2,257 Último mensaje 11 Mayo 2010, 15:33 pm
por jam3s
Las mejores aplicaciones para gestionar tus números en la Lotería de Navidad
Noticias
wolfbcn 0 1,304 Último mensaje 10 Diciembre 2013, 01:43 am
por wolfbcn
Lotería Navidad 2018: cómo comprobar décimos premiados y números online
Noticias
wolfbcn 0 1,334 Último mensaje 22 Diciembre 2018, 14:34 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines