¿Cómo contar el poder de las cartas en la mano?

No quiero obtener los resultados, sino calcularlos yo mismo.

Soy un programador de C++ y quiero crear un programa divertido para calcular el poder de las cartas que se tienen en la mano (¿descritas como "probabilidades"?). No es un problema para mí pensar en cómo hacerlo, pero tengo demasiadas ideas de cómo hacerlo en mi cabeza. Creo que la mejor manera será crear un programa que calcule todas las combinaciones en cada fase (el preflop y el river parecen más fáciles que el flop y el turn) y luego guarde los resultados en alguna base de datos (archivo) desde la cual pueda leer después de eso.

¿Existe una buena manera de contar el poder de las cartas después del flop y el river? Quiero hacerlo de esta manera: calcular la probabilidad de cada combinación posible (posibilidad de 2, 2*2, póquer, escalera de color...); guardar esos valores por separado para uso futuro; cuente lo mismo para todas las demás manos posibles, y luego haga un gráfico para calcular la posición relativa de mi mano entre todas esas otras manos posibles para saber qué tan buena es mi mano.

Some1 me respondió con este enlace: codingthewheel.com/archives/poker-hand-evaluator-roundup Todavía no lo he leído, pero parece algo que estaba buscando.
+1 a Codificandolarueda.com. Muy buen recurso.
Creo que la parte de "la fuerza de una mano" de su pregunta está bien, pero se puede hacer de una manera más enfocada, lo que hace que sea más fácil responder a un concepto específico; de lo contrario, hay demasiado territorio para cubrir.
Ayer leí ese artículo de codificación de la rueda y no es tan bueno, creo que puedo codificar un algoritmo mejor y más rápido.
Esa es una declaración audaz, aunque cualquier esfuerzo por mejorar los evaluadores de manos es excelente, aunque el código disponible ahora es bastante rápido :). Algunas áreas del póquer que creo que podrían usar más herramientas son Omaha Hi (visualización de datos e interfaz de usuario), análisis del árbol de juego Holdem (mejora en CardRunners EV y el ahora desaparecido Pokerazor) y mejores aplicaciones de póquer para dispositivos móviles.
OK, tal vez me he sobrevalorado a mí mismo :D pero mirando los códigos, simplemente no me gustan... por ejemplo, el primer artículo y el uso de máscaras me parecen terribles, pero bueno, era demasiado perezoso para mira los códigos completos y también quiero programarlo yo mismo, no usar la técnica de alguien y no ser influenciado por ellos.
Pensé que esta respuesta de robotics.se Meta podría ser útil para mejorar esta pregunta. Tal vez reformulando o agregando a la pregunta para ayudar a definir las áreas más importantes para estudiar, en relación con su problema.

Respuestas (3)

El "poder" de una mano es, en la práctica, una noción demasiado simplificada. Tocaré la equidad y tu sub-pregunta sobre lo que dice sobre la bondad de una mano.

Si solo está tratando de codificar la equidad, el artículo Codificación de la rueda que otros han mencionado es una lectura obligatoria para los programadores de póquer:

http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup

En cuanto a la descripción de la fuerza de la mano en su segundo párrafo, la equidad preflop ya cuenta para todas las calles, sin considerar las circunstancias que podrían impedirle ver esas calles. Básicamente, no es necesario calcular las probabilidades por calle, ya que esa información ya está integrada en una equidad "caliente y fría" preflop. Flopzilla es una herramienta que suena vagamente como lo que estás describiendo:

http://www.cardrunners-ev-calculator.com/Flopzilla.html

Su línea de pensamiento (clasificar una mano por su "poder" específico de la calle) es similar a la función proporcionada por los gráficos de equidad de ProPokerTools:

http://www.propokertools.com/help/simulator_docs#graph

Estos gráficos muestran equidades mínimas para proporciones de posibles flops contra una mano o rango, y a menudo se citan como evidencia de la jugabilidad de una mano, un concepto que es particularmente relevante en grandes apuestas Holdem.

Se ha trabajado mucho en la clasificación de las manos, pero las clasificaciones tienden a tener una utilidad limitada en los juegos de grandes apuestas y son principalmente útiles para estudiar juegos con límite y situaciones de torneos push-fold:

http://www.bigbetsoftware.com/holdemviewer/rankings/

(Divulgación: soy el autor del software en el enlace anterior).

La filosofía que prevalece en los juegos modernos con grandes apuestas, particularmente en No Limit Holdem, es que las manos no tienen un valor preflop absoluto y dependen de posiciones y rangos específicos de la situación (excepto en la mayoría de los casos, manos premium).

Si su pregunta simplemente se reduce a trazar la equidad, esto se ha hecho hasta la saciedad; puede encontrar una tabla de este tipo aquí:

http://www.pokerstove.com/blog/holdem-preflop-matchups/

Esta tabla es útil para comparar sus cálculos si solo quiere escribir el código como práctica. Un buen complemento para el artículo Coding the Wheel, si está buscando algoritmos para estudiar, es este hilo sobre el rendimiento del evaluador manual:

http://pokerai.org/pf3/viewtopic.php?f=3&t=16

¡Definitivamente revisaré esos enlaces!
Así que revisé muchos enlaces, incluidos estos aquí, y su software se ve mejor entre las calculadoras que he visto. Pero no juego mucho al póquer, por lo que son demasiadas funciones para mí, pero me gusta el aspecto y el control. También he visto muchos gráficos y tablas hoy, así que pronto intentaré comenzar a codificar algo por mi cuenta. Debo pensar en muchas preguntas, porque vi cosas extrañas como que 99 es más fuerte que AK, pero AK tiene un EV mucho más alto, etc., no entiendo estas cosas por ahora.

Hay demasiadas variables a considerar. Eso incluye las probabilidades de las cartas, las probabilidades del bote, la clasificación de otros jugadores (según el historial), la posición, etc. Para crear una IA como esa, primero debes dominar tus habilidades de póquer;)

Lo sé y gracias, he escrito en un papel 5 niveles de cosas, qué hacer y lo primero es dominar las probabilidades y crear una estructura para guardar toda la información útil sobre la mesa. Por ahora, no me importan las apuestas, la posición, la clasificación de los jugadores, etc.

Empezaría añadiendo los "pips" de las cartas (11 para jotas, 12 para reinas, 13 para reyes, 14 para ases, etc.)

Luego agregaría bonificaciones por pares, palo común y "conexión". Esa es la parte difícil. Tengo mis propias fórmulas patentadas, que no revelaré.