Ganar con números calientes y fríos en la Primitiva

Publicado el 25 septiembre 2020 por Daniel Rodríguez @analyticslane

Existen numerosas estrategias para intentar ganar en juegos de azar donde es necesario escoger ciertos números. Cómo puede ser La Primitiva en España, Euromillones en media Europa o la Powerball en los Estados Unidos. Dos de los más populares son jugar los números calientes o fríos. Por un lado, los números calientes son aquellos que han salido más veces en los últimos sorteos. Mientras que los números fríos son aquellos que han aparecido menos o no han salido en los últimos sorteos. Existiendo defensores de ambos métodos. Hoy vamos a ver cómo calcular los números calientes y fríos de la Lotería Primitiva (proceso que se puede repetir para otros sorteos) y comprobar si esta estrategia da mejores resultados que jugar los números al azar.

Los números calientes y fríos

Primero debemos saber qué se entiende por "temperatura" de un número en los juegos de azar. La temperatura de un número es el número de apariciones que ha tenido en los últimos sorteos. Así, si ordenamos los números en base a la cantidad de apariciones en los últimos sorteos se tiene que los primeros números de la lista son los calientes y los últimos los fríos. Números a los que alguna gente recomienda jugar por los siguientes motivos.

¿Por qué jugar números calientes?

El principal motivo por el que se defiende jugar a los números es porque estos son los que más aparecen. Por lo que tiene más "posibilidades" de aparecer que otros. Así las posibilidades de ganar son mayores. Algo que estadísticamente no es cierto, ya que las rachas son algo completamente normal en procesos aleatorios. Aunque se puede defender que como los sorteos se realizan con bolas, es posible que pequeñas diferencias existentes entre estas no todas tengan las mismas posibilidades de salir. Es decir, pequeños defectos en su construcción pueden afectar al resultado.

Por qué jugar número fríos

La principal defensa que se suele escuchar a los defensores de jugar número fríos procede de "La ley de los Grandes Números". Una ley estadística que dice que en una serie aleatoria las apariciones observadas en los números tienden a la probabilidad a medida que aumentan las observaciones. Es decir, todos los números aparecerán las mismas veces. Por lo que los números que no han aparecido menos deberían aparecer más en los próximos sorteos. Lo que nos debería ofrecer más posibilidades.

Aunque la ley de los grandes números es una ley estadística real, en este caso los defensores del método no la interpretan correctamente. La ley no quiere decir inmediatamente después de un sorteo en el que salen un número, esto no volverá a salir hasta que salga el resto. Ni que deban aparecer los que no han salido. Sino que, al crecer el número de observaciones, la media de apariciones de cada número tenderá a la probabilidad.

¿Es mejor jugar números calientes o fríos que jugarlos al azar?

Quizás esta sea la pregunta por la que estás leyendo esta entrada. Algo que se puede comprobar de forma experimental usando los datos históricos. Podemos descargar los datos de todos los sorteos de La Primitiva en España, existen datos desde 1985, jugar con ambos métodos y comprobar si los resultados que se hubiesen obtenido en estos 35 años son mejores que los calculados por la estadística. Datos que podemos descargar en diferentes formatos desde Lotoideas.

En el experimento se van a emplear los datos desde el primer sorteo realizado en 1985 hasta el 17 de septiembre de 2020. Es decir, se va a probar lo que pasaría en 3345 sorteos. Usando para ellos los números calientes y fríos de los 10 o 100 últimos sorteos. Comprobado que hubiese obtenido un jugador aplicando estas técnicas durante los últimos 35 años.

Resultados de jugar con los números calientes

Al jugar con los números calientes durante los últimos 35 años lo primero que se observa es que nunca se hubiese obtenido más de cuatro aciertos. Nunca un premio mayor en 35 años. Tanto si se emplean los últimos 10 o 100 sorteos para calcular las apuestas.

En la siguiente tabla se muestran los resultados del exprimiendo junto a la probabilidad de acercar cada una de las combinaciones. En ambos casos se puede comprobar como los porcentajes se acercan a la probabilidad calculada. Lo que nos demuestra que usar números calientes no es mejor que jugar al azar.

Resultados en los últimos 35 años jugando número calientes basados en los 10 o 100 últimos sorteos frente a la probabilidad real

Resultados de jugar los números fríos

Los resultados con los números fríos son similares a los que se encuentra jugando con números caliente. En este caso el mejor resultado son cuatro aciertos. Tampoco se hubiese obtenido un premio mayor durante los últimos 35 años. Los resultados obtenidos se muestran en la siguiente tabla.

Resultados en los últimos 35 años jugando número fríos basados en los 10 o 100 últimos sorteos frente a la probabilidad real

Al igual que el caso anterior, los valores que se obtienen son muy parecidos a los que predice la teoría. Por lo que tampoco supone una ventaja jugar con números fríos.

Conclusiones

Con un sencillo experimento hemos comprobado que, en los últimos 35 años, no existe una mayor probabilidad de ganar jugando números calientes o fríos que jugando al azar. En ambos casos el mayor premio obtenido son cuatro aciertos de seis. Un premio que se puede considerar todavía menor. Además, los resultados no son mejores que jugar al azar.

Esto demuestra que ambas técnicas no ofrecen ninguna ventaja, posiblemente sea lo contrario. Dado que en estos juegos los premios se reparten entre los ganadores y existen muchos jugadores que usan esta técnica. En el improbable caso de ganar los premios se repartirán entre más y, por lo tanto, serán menores. Es decir, cualquiera de estas dos técnicas para seleccionar los números es igual de buena que hacerlo aleatoriamente, aunque los premios esperados posiblemente sean menores.

Al igual que hemos visto con la estrategia Martingala, aunque estas técnicas pueden "parecer buenas" en teoría cuando alguien las explica, no ofrecen ninguna ventaja. Algo que es difícil en un juego de azar bien diseñados.

Visto los premios obtenidos, los mismos que jugando al azar, nos puede convencer de que no es aconsejable jugar a la lotería. Por lo menos desde un punto de vista únicamente financiero.

Apéndice: código Python para reproducir los resultados

A continuación, dejo el código Python empleado para realizar los experimentos. Un código con el que podréis comprobar los resultados, repetidos con otros rangos y aplicarlos a otros juegos.

def numeros_calientes(historico, desde=None, sorteos=None, complementario=False):
    if (desde is None):
        desde = 0
        
    if (sorteos is None):
        sorteos = min(desde + historico.shape[0], historico.shape[0])
    
    if complementario:
        col = 8
    else:
        col = 7
    
    sorteos = sorteos + desde
    numeros = historico.iloc[desde:sorteos, 1:col].to_numpy()
    numeros = numeros.reshape(1, numeros.shape[0] * numeros.shape[1])
    unicos, veces = np.unique(numeros, return_counts=True)
    
    return unicos[np.argsort(-veces)[0:6]]


def numeros_frios(historico, desde=None, sorteos=None, complementario=False):
    if (desde is None):
        desde = 0
        
    if (sorteos is None):
        sorteos = min(desde + historico.shape[0], historico.shape[0])
    
    if complementario:
        col = 8
    else:
        col = 7
        
    sorteos = sorteos + desde
    numeros = historico.iloc[desde:sorteos, 1:col].to_numpy()
    numeros = numeros.reshape(1, numeros.shape[0] * numeros.shape[1])
    unicos, veces = np.unique(numeros, return_counts=True)

    frios = []

    for num in range(1, 50):
        if num not in unicos:
            frios.append(num)

    frios = np.append(frios, unicos[np.argsort(veces)])
    return frios[0:6]


def simula(historico, sorteos, complementario=False, calientes=True):
    resultados = np.zeros(8)
    
    for sorteo in range(loteria.shape[0] - sorteos):
        if calientes:
            numeros = numeros_calientes(historico, sorteo + 1, sorteos + 1, complementario)
        else:
            numeros = numeros_frios(historico, sorteo + 1, sorteos + 1, complementario)
        aciertos = np.sum(np.in1d(numeros, historico.iloc[sorteo, 1:7].to_numpy()))
        acierto_complementario= loteria.iloc[sorteo, 7] in numeros
        
        if acierto_complementario and aciertos == 5:
            resultados[7] += 1
        else:
            resultados[aciertos] += 1
            
    return resultados

La función numeros_calientes obtiene los números calientes para el los sorteos anteriores al desde en orden inverso. Esto es, el sorteo 0 es último en nuestro conjunto de datos, 1 es el penúltimo y así hasta el final. Además, el método permite usar el complementario, número que también se extrae en el sorteo, para calcular también los números calientes. Opción que por defecto no se usa.

La función numeros_frios funciona exactamente igual para obtener los números fríos.

Finalmente, la función simula usa las dos anteriores para realizar la simulación. Función que necesita los datos, la cantidad de sorteos que se usan para buscar los números calientes o fríos, la opción de usar el complementario y si se desea simular con números fríos o calientes. Devolviendo un vector con el número de veces que se ha acertado un número de bolas y cinco más el complementario.

El formato de histórico es un DataFrame que se obtiene al importar los datos con Pandas. Por ejemplo, los primeros cinco registros del conjunto empleado son:

                 Fecha  N1  N2  N3  N4  N5  N6  NC   R.      JOKER
0  2020-09-17 00:00:00   8  18  19  20  36  40  37  9.0  6316945.0
1  2020-09-12 00:00:00   5  18  25  28  35  46   2  4.0  8403588.0
2  2020-09-10 00:00:00  23  29  30  36  37  43  33  7.0  9766090.0
3  2020-09-05 00:00:00   7  12  14  21  34  38  24  2.0  5865390.0
4  2020-09-03 00:00:00  10  11  13  26  44  45  37  5.0  2540174.0

Imagen de Alejandro Garay en Pixabay