2017-04-18 1 views
0

J'essaie de trouver un moyen de calculer la force d'une main, spécifiquement combien de mains uniques (des 169 mains de départ) ont une plus grande chance de gagner à l'abattage étant donné une complète ou incomplète conseil d'administration (holdem). J'ai essayé de faire cela de plusieurs façons et j'ai eu un peu de succès mais il faut un temps désagréable pour mon programme, étant donné que je suis essentiellement en train de ramifier pour chaque combo de main possible, et de comparer les résultats agrégés pour chaque scénario de trouver combien de mains valent mieux que celles du héros. TLDR c'est terriblement inefficace et cela prend un temps irréaliste à courir.Algorithme qui donne la force de la main au poker

Cependant, il existe des outils comme celui-ci http://www.cardplayer.com/poker-tools/odds-calculator/texas-holdem qui semblent faire le calcul beaucoup plus rapidement. Le programme ci-dessus semble faire des calculs pour toutes les futures combinaisons de cartes possibles, de sorte qu'il peut vous donner la meilleure main pour les planches incomplètes. Bien que, pour mon programme particulier, je voudrais trouver le nombre de mains devant le héros à un moment donné, ce qui me demanderait d'exécuter le programme ci-dessus pour chacune des mains de départ non uniques 52 * 51, et trouver ma main placer parmi le reste et une fois le nombre de meilleures mains a été obtenu, je vais devoir les réduire à des mains de départ uniques (ie 8c7h et 8h7c seraient réduits à 87o)

Donc ma question est, y at-il des outils/frameworks/références (de préférence en Java) pour calculer la force de la main d'un héros par rapport à une main anonyme étant donné un tableau complet ou incomplet qui ne prend pas non plus un jour à courir?

+0

Utilisez Monte Carlo Simulation, jouez des milliers de parties efficacement contre des mains et des cartes aléatoires, cela prendra moins d'une seconde. – maraca

Répondre

0

Ce fil a beaucoup d'informations Stack Overflow Evaluation Algorithms

également à Code Project et a tutorial on an algorithm et la source Java: at Github et dans différentes langues at rosettacode.

+0

J'ai un code qui me dit la force d'une main assez rapidement. Ce n'est pas là que se trouve le goulot de la bouteille. Le problème que je rencontre est de calculer le nombre de mains uniques devant le héros, je dois comparer toutes les mains pour toutes les combinaisons de cartes possibles. Et puis comparez ces résultats, puis réduisez-les à des mains uniques. –

+0

Donc, cette question cherche les probabilités des différentes mains, c.-à-d. 52 choisissent 5 pour n'importe quelle main, et 4 choisissent 1 pour une couleur royale par exemple, mais peut-être donné toutes les cartes déjà vues? –

+0

La question est combien de mains uniques sont en avance sur les héros pour un tableau donné. Il y a 169 mains de départ uniques, donc la fonction devrait être essentiellement int (retourne 0-168) getHandsAhead (Hand heroHand, Board currBoard) –

1

Je ne suis pas beaucoup plus d'une sorte de poker de gars, mais vous pouvez trouver ThePokerBank site intéressant, qu'en tout un cours dédié à poker theory du MIT, un bonus infographic pour vous aider aussi.

Il existe différentes stratégies que vous pouvez prendre pour essayer de résoudre ce problème, toutes impliquant beaucoup de connaissances sur l'analyse statistique, je dirais que l'une des raisons pour lesquelles d'autres algorithmes de poker fonctionnent un peu mieux est qu'ils utilisent une forme de maths de vectorisation au lieu d'une série de boucle for. Je sais que cette langue comme octave/MatLab/R prend cette stratégie pour faire l'opération en bloc.

Bonne chance et amusez-vous !!