Jugá mejor al truco usando ciencia de datos
La tradición argentina con más vigencia (después del mate y la inflación), es el truco, un juego que utiliza la baraja española y que combina apuestas, complicidad, mentiras y algo de suerte.
Para explicar un poco de que se trata esto: como en todo juego de cartas, la mano que te toca puede ser mejor o peor, pero a partir de eso tenes que tomar las decisiones correctas y, para eso, lo mejor es saber que tan buena es tu mano, pero como ya sabemos el truco claramente lo invento un gaucho después de un empacho de sopaipillas y una sobredosis de chamame, por lo que las reglas son bastante complejas y raras, y es difícil entender que tan buena es tu mano.
Hace un tiempo encontramos una publicación de Emiliano Gomez en Revista de Educación Matemática de la Universidad nacional de Córdoba, que con fórmulas analíticas, se analizan las probabilidades de cada mano, por lo tanto, te da una idea concreta, es por eso que nos preguntamos como podría ser hacer ese análisis por medio de ciencia de datos. En otras palabras, ignoramos las fórmulas analíticas que muestran el comportamiento preciso del fenómeno que tanto se esforzaron en hacer, para hacer algo más simple que no da precisión matemática. Después nos preguntamos por que los matemáticos odian a los ingenieros...
Si solo te importan los resultados finales, hicimos unos afiches que podes usar cuando vayas a jugar. Los puedes encontrar al final de la publicación, bueno, no al final, un poco antes, al final pusimos una sorpresa.
Método
Probabilidad de que alguno de los 4 fuertes esté en juego (Macho, Hembra, 7 de espada y de oro).
Probabilidad de ganar un envido (teniendo puntos)
Con cuantos puntos conviene cantar envido si se busca "robar" puntos.
La simulación
# Primero vamos a crear un diccionario para tener id de cartas y que carta es
palos = ['Espada','Basto','Oro','Copa']
numeros = [1,2,3,4,5,6,7,10,11,12]
dic_Cartas={}
i = 1
for palo in palos:
for numero in numeros:
dic_Cartas[i] = [numero,palo]
i += 1
print(dic_Cartas)
Una observación, el truco se puede jugar de a 2, 4 o 6 participantes, por lo que repartiremos para 6 y luego usaremos solo los datos de los jugadores que analizaremos.
Probabilidad de que estén presente alguno de los 4 fuertes
También se puede utilizar una fórmula de una serie llamada "Hipergeometrica", o utilizar conjuntos como se hace en el articulo de referencia, pero como no somos matemáticos, nosotros simplemente vemos cuántas veces salio alguna en nuestra simulación, así:
import numpy as np
Cartas_Buscadas = [1, 2, 3, 4]
# Que chance hay de que toque en la ronda alguna carta en especial
## Hacemos las variables de las columnas en las que buscamos
Df_Id_1j = Df_Id[['NA1','NA2','NA3']]
Df_Id_2j = Df_Id[['NA1','NA2','NA3','EA1','EA2','EA3']]
Df_Id_4j = Df_Id[['NA1','NA2','NA3','NB1','NB2','NB3','EA1','EA2','EA3','EB1','EB2','EB3']]
Df_Id_6j = Df_Id[['NA1','NA2','NA3','NB1','NB2','NB3','NC1','NC2','NC3','EA1','EA2','EA3','EB1','EB2','EB3','EC1','EC2','EC3']]
def Probabilidad_Carta_especifica(cartas_a_buscar,grupo=Df_Id_4j):
mascara = grupo.isin(cartas_a_buscar).any(axis=1)
cantidad = mascara.sum()
Chance = cantidad/Df_Id.shape[0]*100
return(Chance)
Probabilidad de ganar un envido
# Definimos una función para calcular el valor de envido para cada carta
def valor_carta(carta):
if carta[0] in [10, 11, 12]:
return 0
else:
return int(carta[0])
Luego, calculamos el envido. Para eso iteraremos por cada palo y veremos cuantas veces sale una carta de ese palo.
def envido2(row,columna=0):
sumas = []
# Iremos uno por uno en cada palo (espada, basto,copa y oro)
for palo in palos:
# Valores iniciales
suma = 0
iguales = 0
for i in range(columna,columna+2):
carta = row[i]
if carta[1]==palo:
iguales += 1
suma = suma + valor_carta(carta)
# En caso de tener 2 cartas iguales, sumara 20 puntos
if iguales == 2 :
suma = suma + 20
# En caso de tener flor, no nos importa calculamos el envido por que somos mendocinos de pura cepa y no jugamos con flor:
if iguales == 3 :
suma = envido_con_3(row[1],row[2],row[3])
sumas.append(suma)
return(max(sumas))
def envido_con_3(carta_1,carta_2,carta_3):
a = valor_carta(carta_1[1])
b = valor_carta(carta_2[1])
c = valor_carta(carta_3[1])
puntos = []
puntos.append(a+b+20)
puntos.append(a+c+20)
puntos.append(b+c+20)
return(max(puntos))
Conclusiones
Link's de interés
Los jugadores de la selección argentina, en la copa américa de Brasil, antes de la final jugaron a un pequeño juego, mezclaron las cartas y una por una intentaban adivinar cúal era la siguiente carta. El juego consistía en que si la carta la adivinaban entre las primeras 10, significaba que, iban a ser campeones (Spoiler si fueron <3).
Por lo que cuentan los jugadores en un documental, todos acertaron pero… ¿que tan posible era eso?
Las posibilidades de adivinar una carta en alguno de los primeros 10 intentos es lo mismo que 100% menos la probabilidad de no acertar.
Para encontrar la probabilidad de no acertar una carta, es:
Teniendo en cuenta que la baraja de truco tiene 40 naipes, y vamos hacer el intento 10 veces, (y no nombramos las cartas que ya salieron) nos queda:
Observen que en cada intento se sacan cartas, por lo que numerador y denominador va bajando.
Como podemos ver, muchos números arriba y abajo se repiten, por lo que se puede simplificar a:
Lo que nos dice que:
Las probabilidades de que uno acierte es de 1/4 , pero para saber las probabilidades de que acierten varios hay que multiplicar las posibilidades de cada uno, por lo tanto para n jugadores, es:
Por lo que conocemos, los que jugaron fueron:
- Leo Messi
- Leandro Paredes
- Papu Gomez
- Rodri De Paul
- Nico Otamendi
- Angelito Di María
- Gio Lo Celso
- Sergio Agüero
Son 8 jugadores, como todos acertaron, nos indica una probabilidad de:
Esto es aproximadamente una (1) en 65000.
Las probabilidades son prácticamente cero y aun así se dieron todas las condiciones, lo que demuestra que nuestros jugadores no saben de estadística... pero si de magia.
¿Necesitas ayuda?
Podes hacer preguntas aca abajo en los comentarios o en nuestros perfiles de linkedin que puedes encontrar en este link.
Si estas buscando ayuda en proyectos grandes, nos podes contratar por medio de nuestra consultora haciendo click en este link
. Hacemos ingenieria electromecanica, civil, desarrollo de software y varias cosas mas.
Comentarios
Publicar un comentario