我目前正在尝试制定一个扑克算法,以确定赢得牌局的机会。它需要非常快速,因为每次都需要循环数十万只手。PHP获取所有扑克独特的牌局结果
我正在努力做的是能够获得所有可能出现在董事会的独特的手。一块板子包含5张牌。
每当卡片出现在主板上时,该卡片不能再次出现。
所以我一直在做的所有可能的电路板组合循环通过使用for循环的所有可能的结果。
对于这个例子,我只能得到董事会的前3张牌。
的代码是这样的:
// $card_set_count is the amount of cards left in the deck after taking away the
// user's hand cards.
for($i=0;$i<$card_set_count;$i++) {
// First known card
$known_card1 = $card_set[$i];
for($j=0;$j<$card_set_count;$j++) {
// Second known card
$known_card2 = $card_set[$j];
// Skip the card if we already have it out
if($known_card1 == $known_card2) continue;
for($k=0;$k<$card_set_count;$k++) {
// Third Known Card
$known_card3 = $card_set[$k];
// Skip card if the card is already out
if($known_card3 == $known_card2 || $known_card1 == $known_card3) continue
// Create board
$board = array();
$board[] = $known_card1;
$board[] = $known_card2;
$board[] = $known_card3;
}
}
}
这不会让我的所有可能的组合板。唯一的问题是它让我重复值也一样,例如板:
广告6D 4C
相同
4C广告6D
我可以array_unique()上运行我的董事会的名单,但问题来到这里与我的forloop不得不循环91020手。这对我的算法来说非常慢。
我只是想知道如果有人有更好的想法循环通过可能的董事会。
将电路板值存储在一个数组中,然后测试以查看卡片值是否在列表中仍然非常缓慢。有没有只通过独特的板组合循环的方法?
误解了你的问题,所以我编辑了我的答案。 – m69