Monday, 7 October 2019

Las probabilidades de la lotería


De vez en cuando compro un boleto de lotería, lo reconozco. ¿Por qué? Pues no lo sé. Supongo que como todos, por aquello de... "y si toca"... Supongo que todos caemos en la (falsa) idea de que a alguien le tiene que tocar. Y lo cierto, es que eso no es cierto. 😊

Mucha gente nos hemos tomado la molestia de entender cómo funciona la lotería. Vas a la web y lees los datos, las probabilidades, y listo. En un juego como el de los Euromillones, por ejemplo, la probabilidad de ganar un premio de primera categoría es de 1 entre 139,838,160 (más info aqui)

¿Pero, qué quiere decir eso exactamente? Si jugaras una apuesta en todos y cada uno de los sorteos de Euromillones, ¿cuánto tiempo crees que te costaría ganarlo? Hay quien dice que ni en un millon de años...




Qué exagerados, ¿no? ¿Cuánto tiempo dirías tu? Es evidente que no esperas ganar después de 1 año jugando, sería un chollo. Pero... ¿Y si estás 10 años jugando? ¿Y si son 50 años, toda una vida, jugando sin excepción dos veces todas las semanas? ¿Dirías que tienes una probabilidad aceptable de que te toque?

Ni remotamente.



Los que entienden algo de mates, saben que no. Que puedes estar una vida, y dos, y tres, jugando, y que no te va a tocar. Pero yo quería verlo. Experimentarlo. Quería tener una idea real de cómo de difícil es que te toque. Evidentemente, el azar es el azar y puedes ganarlos en la primera apuesta, pero también no ganarlos nunca. 

Decidí investigar, y encontré simuladores que permitían hacer eso: simular apuestas una y otra vez. Lamentablemente, en cuanto empecé a probarlos me di cuenta de que eran demasiado lentos. La cosa iba para largo, y su baja velocidad iba a hacer la prueba inviable. Así que hice lo único que se hacer: programé un simulador de Euromillones más rápido que los que había por ahí.

Es una aplicación que simula el proceso de tener 50 bolas en un bombo, y sacar 5 al azar para los números normales. Luego repite el proceso después, sacando 2 de entre 12 bolas más (para las estrellas). Además, hace esto dos veces por sorteo, una para sacar la combinación ganadora, y otra para sacar una apuesta distinta cada vez. Todo ello, 17.000 veces por segundo.

Programé la aplicación para simular 1 apuesta simple por sorteo, 2 veces por semana, con el bote máximo (190 Millones de Euros de premio). Añadí además una estimación de las cantidades que recibes en los premios (cuando resulta que hay premio) para poder tener un balance del dinero que llevas gastado y ganado. 

El resultado, como podéis ver en el vídeo de más arriba, es desalentador. 

1.383.899 años jugando
Más de 78 millones de euros perdidos

Y eso a pesar de haber ganado un bote de 190 millones de euros. Lo cierto es que en el vídeo se ve claramente que, cuanto más juegas, más pierdes.

¿Es más probable ganar con apuestas aleatorias, o siempre la misma?

La teoría nos dice que la probabilidad de ganar es la misma (si no fuera la misma, tened bien claro que su precio no sería el mismo tampoco), pero gracias a este simulador, podemos comprobarlo.

He ejecutado la simulación desmarcando la opción de que regenera la apuesta cada vez, para que siempre sea la misma. ¿El resultado? Pues igual. En este caso en 1500 millones de años ni siquiera ha logrado ganar el primer premio. Cuando llevaba un número de años similar a la simulación anterior, los resultados eran muy muy parecidos:




Dado que ha tardado más en ganar el primer premio, ¿quiere decir que una apuesta fija tiene una probabilidad más baja de ganar? No, tiene la misma. Dado que solo esperamos a que se gane el primer premio 1 vez (el número de muestras de ese evento es bajo), hay bastante variabilidad acerca del momento en el que se consigue. Sin embargo, si esperáramos a que la simulación gane el primer premio muchas veces, las cifras tenderían a igualarse.

¿Y qué sucede con las apuestas múltiples?

Las apuestas múltiples sí tienen más probabilidad, evidentemente. Por eso cuestan más, mucho más.

El juego de los Euromillones, por ejemplo, permite hacer apuestas en las que no escoges 5 números y 2 estrellas, sino más. Hasta un máximo de 10 números y 5 estrellas. Evidentemente, la probabilidad de ganar con una apuesta así es mucho mayor, teóricamente equivalente a hacer 2520 apuestas sencillas. Por eso, su precio es 2520 veces mayor, nada menos que 6300 € por apuesta múltiple.

Ahora bien, ¿merece la pena? ¿cómo de probable es ganar con una apuesta así de fuerte (y de cara)? Veámoslo:




Como podemos comprobar, el resultado es igual de desalentador. En los primeros 100 años, la inversión en apuestas es de 66 millones de euros, y apenas se ha ganado más de medio millón.

El primer premio de primera categoría se obtiene tras 600 años jugando, y aunque hay varios puntos de la simulación en los que el balance es positivo (a los 1200, 1400, 1700, 2200 y 2700 años jugando) la tendencia a la larga es exactamente la misma. Cuanto más juegas, más pierdes. Así que no, no merece la pena.

Y si es tan improbable, ¿por qué toca tan a menudo? 

Pues porque juega muchísima gente (se prueban muchísimas combinaciones distintas cada día), normalmente entre 20 y 60 millones por sorteo, dependiendo del bote que haya. Así que la probabilidad de que le toque a alguien es razonablemente alta. Pero lamentablemente, la probabilidad de que ese “alguien” seas tú sigue siendo bajísima.

¿Como diseñan estos sorteos?

Está claro que si tocara muy a menudo, el bote no crecería (y no despertaría demasiado interés), y si tocara muy poco, la consecuencia sería la misma (la gente no se interesaría por el sorteo).

Así que si os fijáis, dado que juegan 20-60 millones de personas cada día, y hay un número de combinaciones de 139 millones, el juego está perfectamente diseñado para que toque el gordo cada pocos sorteos. Por supuesto, el azar es el azar, y a veces tarda más, o menos, pero por regla general, la probabilidad se cumple.

¿Realmente se cumplen las probabilidades?

Si, a rajatabla.

Veamos la tabla de probabilidades oficial de los Euromillones:



Si os fijáis en el número de veces que ha tocado cada tipo de premio en el siguiente pantallazo, sacado del final del video:



 En nuestra simulación se han hecho más de 144 millones de sorteos. Veréis que las probabilidades teóricas se cumplen a rajatabla (especialmente en los premios de abajo, con mayor número de muestras):

- El premio 2 + 0 ha tocado 1 vez de cada 21.9 veces
- El premio 2 + 1 ha tocado 1 vez de cada 49.23 veces
- El premio 1 + 2 ha tocado 1 vez de cada 187.9 veces
- El premio 3 + 0 ha tocado 1 vez de cada 313.6 veces
...
Y así sucesivamente. Los números son muy muy aproximados a los de la tabla de arriba, proviniente de la página oficial de los Euromillones.

Eso muestra que mi programa está bien hecho, y que las probabilidades que ofrecen en la web del sorteo son 100% reales. 

Aun así, ya ves que ganar es muy, muy, muy poco probable. Podrías estar mil vidas jugando, y ni aproximarte a ganar...

Suerte!



Tuesday, 16 April 2019

Azure IoT Device Client SDK v 1.2.0 doesn't work with Xamarin Android apps

Several hours lost trying to deal with a connectivity issue between our Android app and a test Azure IoT server, just to find out that the problem was just having update the Client SDK nuget package (https://github.com/Azure/azure-iot-sdk-csharp)

The SendEventAsync seemed to never finish the task when using MQTT, and it threw an exception when AMQP (something related to Amqp constructor could not intialize the Configuration System).

After several hours assuming it was a fault in my code, or in the Azure setup, I checked the SDK release notes ( https://github.com/Azure/azure-iot-sdk-csharp/releases ), to find that last version was released a few days ago, with a major AMQP redesign.

Downgrading to version 1.19 simply did the trick...

Friday, 14 July 2017

World Enduro Rally

I'm happy to share the result of the work I've been doing in the last months: yesterday, World Enduro Rally came to light.



The game is available for XBoxOne, Steam, Android and Windows. You can get all the details at its Facebook page, or download directly here:





Hope you like it!

Wednesday, 28 June 2017

Como mejorar tu protección contra ciberataques como WannaCry, en 3 sencillos pasos


Nota: Consejos genéricos para Windows 8 y 10. Podría no aplicar a versiones anteriores de Windows. Esto es solo un consejo que ayuda a mejorar la seguridad, y no garantiza ningún tipo de invulnerabilidad a éste u otro tipo de ataques. El autor de este blog no es experto en seguridad y no ofrece ninguna garantía en absoluto. Use it at your own risk.