Actuellement, je suis en train de port de Keith Règle Texas Holdem Evaluator Main à Omaha Salut:Omaha Salut main Evaluator
Après avoir réfléchi plus sur la algorithme, j'ai trouvé une solution qui me donne les bons pourcentages pour les mains et tout va bien ..
Mais c'est vraiment très lent. Comment puis-je accélérer les choses?
Comme la seule chose que je fais en ce moment est de chercher une main normale de cinq cartes, un LUT pourrait être bon pour moi. Quelqu'un a intégré un avant?
static void Main(string[] args)
{
long count = 0;
double player1win = 0.0, player2win=0.0;
ulong player1 = Hand.ParseHand("Ad Kd As Ks");
ulong player2 = Hand.ParseHand("Th 5c 2c 7d");
foreach (ulong board in Hand.Hands(0, player1 | player2, 5))
{
uint maxplayer1value = 0, maxplayer2value = 0;
foreach (ulong boardcards in Hand.Hands(0, ulong.MaxValue^board, 3))
{
foreach (ulong player1hand in Hand.Hands(0Ul, ulong.MaxValue^player1, 2))
{
uint player1value = Hand.Evaluate(player1hand | boardcards, 5);
if (player1value > maxplayer1value) maxplayer1value = player1value;
}
}
foreach (ulong boardcards in Hand.Hands(0, ulong.MaxValue^board, 3))
{
foreach (ulong player2hand in Hand.Hands(0UL, ulong.MaxValue^player2, 2))
{
uint player2value = Hand.Evaluate(player2hand | boardcards, 5);
if (player2value > maxplayer2value) maxplayer2value = player2value;
}
}
if (maxplayer1value > maxplayer2value)
{
player1win += 1.0;
}
else if (maxplayer2value > maxplayer1value)
{
player2win += 1.0;
}
else
{
player1win += 0.5;
player2win += 0.5;
}
count++;
}
Console.WriteLine("Player1: {0:0.0000} Player2: {1:0.0000} Count: {2}", player1win/count * 100, player2win/count * 100, count);
Console.ReadLine();
}