我目前正在嘗試制定一個撲克算法,以確定贏得牌局的機會。它需要非常快速,因爲每次都需要循環數十萬隻手。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