Ir al contenido principal

APLICACIÓN ANDROID PARA LOTERIAS: LOTTODROID

Hace ya más de un año hablé en mi post sobre Loterias sobre un proyecto que tenía en mente para la generación de números automática para los sorteos de la lotería.

Hoy por fin puedo decir que este proyecto es una realidad. La interfaz está diseñada sobre Android  junto con el plugin de Eclipse para desarrollo con Android y el SDK de Android. El algoritmo de generación de números lo implementé hace más de un año y únicamente he tenido que realizar algunas refactorizaciones para mejor el diseño y la extensibilidad. Hace apenas una semana he realizado la subida al conocido Play Store, pero los detalles de este proceso los abordaré en un futuro post. A continuación os presento mi pequeño proyecto Android llamado LottoDroid.





¿Qué es LottoDroid?

 LottoDroid es una herramienta para generar números y apostar en tus sorteos de lotería preferidos (¿Por qué dejar que una máquina lo haga por ti?). En realidad tú configuras LottoDroid para que te genere unos u otros números dependiendo de los parámetros de configuración qué tú introduces. ¿Con qué información jugamos? Con información estadística de los números que aparecen en los sorteos, las figuras que más aparecen (pares-impares, altos-bajos), las combinación de anillos con mayores probabilidades de aparecer....  ¿Qué no es LottoDroid? No es una especie de Rappel que te va acertar todas las semanas los números de la Lotería... Si así fuera lo tendría yo en mi casa para MI SOLO!!!


Lectura de Sorteos. Arranca la aplicación !!

Esto es un punto que modificaré en breve porque no me gusta como está hecho ahora. Al arrancar la aplicación se leen ficheros  de sorteos en XML (que contiene la misma distribución) que se mantienen en memoria para cálculos estadísticos. Cambiaré la lectura de los ficheros a unos albergados en un servidor para que no haya que actualizar la aplicación con cada modificación de los ficheros de sorteos. Lo ideal sería que un organismo como la ONLAE tuviera una interfaz (web service) o ficheros planos en un servidor para poder obtener la combinación de los sorteos pero de momento no la hay (por lo menos yo la desconozco!!).




Pantalla principal

En esta pantalla tenemos tres botones en un principio:

  • Uno para la simulación de números para Loteria Primitiva.
  • Uno para la simulación de números para el sorteo de Euromillones.
  • Un último botón para consultar la Ayuda de la aplicación.

La idea es añadir más sorteos en un futuro como la Bonoloto, la Quiniela...

Hasta aquí todo fácil no!!




Pantallas de Lotería Primitiva y Loteria Euromillones

Ambas pantallas son similares y contienen 5 pestañas cada una de ellas. Las tres primeras las vamos a utilizar para configurar la combinación de números que queremos generar. En la cuarta vamos a poder visualizar la combinación generada mediante una pequeña animación. En la última tenemos una lista de opciones en las que podremos consultar estadísticas y visualizar datos gráficamente.


Pantalla de Apariciones

En esta pantalla tendremos varias opciones para filtrar y quedarnos sólo con los números que hayan aparecido un número determinado de veces en los últimos 100, 50 y 20 sorteos. Por ejemplo, podremos filtrar que aparezcan los números que han aparecido al menos 6 veces en los últimos 100 sorteos, al menos 3 veces en los últimos 50 sorteos y al menos una vez en los últimos 20 sorteos. También podemos deshabilitar estos filtros para que todos los números sean candidatos a la hora de generar la combinación.

A su vez, también podremos elegir el peso o importancia de que un número aparezca más o menos veces en los últimos 100, 50 y 20 sorteos. Este peso será un valor entre 0 (mínimo) y 1 (máximo).

Por ejemplo, si configuramos que Peso(A100) = 1 , Peso (A50) = 0,5 y Peso(A20) = 0,5 estamos indicando al programa que es más importante que un número aparezca más veces en los últimos 100 sorteos y es menos importante que aparezca en los últimos 50 y 20 sorteos, lo que se traduce en que preferimos que salgan los números que más salen en los últimos 100 sorteos.




Pantalla de Ausencias

En esta pantalla lo que podemos configurar es que sólo aparezcan los números que hace tiempo que no han salido. Si ponemos un 3 en el campo número de ausencias, aparecerán números para la combinación que hace 3 sorteos que no han salido. Se puede deshabilitar el filtro introduciendo un 0 en este campo.

Al igual que en la pestaña anterior, podemos configurar el peso o importancia de que un número no aparezca  en un número determinado de sorteos. Si establecemos que P(Aus) = 1 y que P(A100) = P (A50) = P(A20) = 0,25, estamos indicando al programa que te genere números que hace tiempo que no aparecen en los sorteos.



Pantalla de Anillos

Pantalla donde podemos seleccionar la combinación de anillos que queremos en nuestra combinación. Lo visualizaremos gráficamente mediante el tablero de apuestas del sorteo.

Un anillo es un conjunto de números consecutivos dentro de una casilla de apuestas. Normalmente en una casilla de apuestas hay un anillo externo, un anillo medio y un anillo interno. Cuando configuramos en la lista desplegable nuestro anillo con la combinación de anillos 3-2-1, queremos decir que queremos que nuestra combinación para jugar esté compuesta por tres números  del anillo externo, 2 números del anillo medio y 1 un número del anillo interno.

Cuando seleccionamos un anillo nos aparecerán la proporción de números dentro de un anillo marcados con una X. Cada anillo aparecerá resaltado de un color diferente.

¿Por qué elegir una combinación de anillos u otra? El cálculo estadístico nos dice que hay determinadas combinación de anillos que no aparecen nunca o casi nunca y que otras se presentan con bastante asiduidad. LottoDroid te ayuda a elegir las combinaciones más probables porque cuando eliges un anillo te indica las veces que ha salido esa combinación en los últimos sorteos. 



Pantalla de Simulación

En esta pantalla no podremos modificar nada y sólo nos servirá para visualizar la combinación que genera LottoDroid según las estadísticas y los parámetros configurados mediante extracción de bolas.



Pantalla de Estadísticas

En esta pantalla no podremos configurar nada. Consta de una lista de opciones en las que podremos consultar estadísticas de números como:


  • Los números que más salen en los últimos 100 sorteos.
  • Los números que más salen en los últimos 50 sorteos.
  • Los números que más salen en los últimos 20 sorteos.
  • Los números mejor valorados según el programa LottoDroid.
  • Gráfica estadística para ver los anteriores conjuntos de datos de un solo vistazo.

Para la implementación de la gráfica he utilizado la librería android-plot 0.5.






Preguntas y Respuestas. 


  • Parece complicado jugar con el programa LottoDroid, ¿no es así? No, no lo es. Si lo que queremos es obtener  una combinación para jugar rápidamente, te diriges a la pestaña de Simulación y le das al botón de Play. El programa viene configurado de inicio con unos parámetros de pesos y de filtros para que puedas jugar de inicio si no deseas tocar nada de la configuración.


  • ¿Por qué en el Euromillon no me salen estrellas? De momento esta opción no está disponible pero aparecerá más adelante. 


  • ¿Me va a tocar? Espero que sí, pero dependerá mucho de la suerte. Lo único que te proporciona LottoDroid es jugar una combinación generada con datos estadísticos de los números a priori.
  • ¿De dónde has sacado todas las imágenes para la aplicación? La mayor parte de ellas procede del fantástico banco de imágenes openclipart


Mejoras y nuevas opciones.


  • Incluir el sorteo de la Bonoloto 
  • Incluir el cálculo más probable de estrellas en el Euromillon
  • Leer ficheros de los diferentes sorteos de un servidor
  • Añadir una nueve informe para consultar gráficamente mediante tonalidades de color (en tablero de apuesta) los números más fríos y más calientes, es decir, los que menos y más salen respectivamente.
  • Añadir un botón en la pantalla de Simulación para jugar los números mejor valorados por LottoDroid, otro para jugar con los que más salen en  los últimos 100 sorteos, otro para jugar a los que menos salen, etc... 
  • Realizar un ajuste de pesos automático según estadísticas de sorteos a posteriori. Se podría realizar un algoritmo que ajuste los pesos dependiendo de los diferentes números que salgan cada semana. La pregunta para modificar los pesos sería: ¿Qué combinación de pesos hubiera hecho que en la última semana hubiera acertado más números?
  • Añadir una característica que tienen casi todas las aplicaciones de Loteria que me he descargado, y es que puedas comprobar cuantos números has acertado en una semana concreta.
Os animo a qué lo descarguéis y la probéis para que me digáis vuestras impresiones y opinéis sobre posibles mejoras o fallos. 

Os dejo el enlace a la Play Store aquí





Comentarios

  1. Cuanto me cobrarías por desarrollar una aplicación similar y enseñandome como la programas. escribeme en Twitter @jamjhons

    Muy interesado

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Soluciones Alchemy Classic 389 elementos

Hace algún tiempo salió una actualización del Juego Alchemy Classic en la que aparecían más elementos (389 en lugar de 238). Aparte de añadir elementos mejoran algunas traducciones en castellano y mejoran la interfaz, aunque todavía hay algún error en algunos nombres de elementos. Aquí os dejo las soluciones para los que estén atascados y no puedan dormir por las noches: Sustancia primaria Aire=Elemento primario  Fuego=Elemento primario  Agua=Elemento primario  Tierra=Sustancia Primaria Arena=Piedra + Aire Piedra=Tierra + Fuego Arcilla=Arena + Pantano Caliza=Tierra + Amonitas Carbono=Fuego + Madera Cloro=Fuego + Sal + Electricidad CO2(Dióxido de Carbono)=Ceniza + Ácido nítrico Electricidad=Relámpago+ Metales Gas natural= Yacimiento de gas + Pozo Helio=Refinería de gas + Gas Natural Hidrógeno=Electricidad + Agua Hielo=Frío + Agua Imán=Piedra + Metales Metano=Deshechos Vegetales + Pantano Oxígeno=Electricidad + Agua Petróleo=Unidad

JAXB: Leer y escribir ficheros XML

Muchas veces en nuestras aplicaciones debemos manejar documentos XML ( Extensible Markup Language ). Este lenguaje se ha convertido en un estándar para intercambio de datos entre programas y aplicaciones a través de Internet. En un esquema XML (o  XSD ) podemos definir los elementos que pueden aparecer en un documento XML así como las relaciones entre los mismos. JAXB ( Java Architecture for XML Binding ) es un estándar Java para transformar un esquema XML (o  XSD ) en una representación a objetos java. Mediante la API de JAXB podemos mapear un objeto Java a un documento XML ( "marshall" ) y el proceso contrario, es decir, a partir de un esquema XML crear su conjunto de objeto Java asociado ( "unmarshall" ). JAXB Resumiendo lo que nos proporciona JAXB es: Generación de objetos Java a partir de un XSD a través de un compilador Proporciona capacidades de marshall/unmarshall (escribir fichero XML desde java y al contrario) Integración con Maven a través de xj

Matemáticas y cine.

El otro día estaba viendo por la televisión una película llamada 21 blackjack . En una escena de la película el profesor de matemáticas ( Kevin Spacey ) le presenta a uno de sus alumnos la siguiente situación: se encuentra en un concurso en la que debe escoger entre tres puertas (1,2 y 3). En dos de ellas hay una cabra, sin embargo en una de las 3 hay un flamante coche nuevo. El alumno responde que quiere abrir la puerta. El presentador, conocedor de lo que hay detrás de cada puerta decide abrir otra puerta diferente mostrando detrás de ella una cabra. El profesor se dirige al alumno y le pregunta, ¿cambiarías la puerta o te quedarías con la puerta que tienes? Muchos de nosotros cambiaríamos de puerta pensando que es una treta del presentador para engañarnos. ¿Cual elegiríais vosotros? Al comienzo tenemos 1/3 de probabilidades de acertar la puerta donde está el coche. Una vez que el presentador abre la puerta con una cabra, la mayoría de gente piensa que hay la misma probabilidad de