Я не понимаю, что вы имеете в виду под жадным алгоритмом.Вы не пытаетесь заставить дилера максимизировать какую-то цель или найти хорошую стратегию для чего-нибудь, не так ли?
Это больше похоже на симуляцию карточной игры.Нам нужно знать, что вы на самом деле хотите сделать потом.
Псевдокод:
//Your deck state:
deck //list of cards in the deck (in top->bottom order) (initially shuffled)
i; //index of the card at the top of the deck
void dreshuffle(){
shuffle(cards);
i = 0;
}
int get_card(){
if(i >= cards.length){
//no cards left in pile
reshuffle()
}
return cards[i++];
}
Конечно, это всего лишь упрощенный пример, поскольку предполагается, что у дилера все карты возвращены, когдаперетасовки.Возможно, вам может понадобиться добавить стопку сброса или что-то подобное в соответствии с вашими правилами игры.
Кстати, ваш метод перемешивания странный.Почему вы тасуете дважды?Более нормальный подход был бы
list;
n = list.count - 1 //last index in list
while(n >= 0){
i = random integer in range [0,n] (inclusive)
swap(list[i], list[n])
n -= 1
}
(или просто использовать библиотечную функцию)