現在、私は、オマハHiにポートキース・ルールのテキサスホールデムのハンド評価者にしようとしている:オマハこんにちはハンド評価者
についてもっと考えた後、アルゴリズム、私は私に手のための適切なパーセンテージを与えるソリューションを見つけた、すべてが正常です..
しかし、それは本当に遅いです。どのように物事をスピードアップできますか?
私が今行っている唯一のことは、通常の5枚のカードの手をルックアップすることです.LUTは私にとって正しいかもしれません。誰もが前に統合された?
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();
}