ни покажется на первый взгляд странным, такой алгоритм выдает достаточно хорошо перемешанную колоду. В принципе, эффективность тасования можно еще повысить, взяв вместо числа перестановок 104, например, 1000. Тут вы можете поэкспериментировать сами.
void TPack: :Shu'ffle()
{
int n, rnd ;
TCard card;
// каждой карте присваиваем признак "находится в // колоде"
for( n = 0; n < PACK_TOTAL; n +'+ ) Cards[n].Is = true;
.4 «
// PACK_TOTAL раз выполняем перестановку карт for( n = 1; n <= PACK_TOTAL; n ++ )
{
// выбираем случайный номер карты в. диапазоне от О
//до PACK_TOTAL-1
rnd = random(PACK_TOTAL) ;
// запоминаем последнюю карту card = Cards[PACK_TOTAL-1];
// на ее место записываем карту с номером rnd" Cards[PACK_TOTAL-1] = Cards[rnd];
// на место карты с номером rnd записываем карту, // которая ранее была последней:
Cards[rnd] = card; , } }
7 Зак. 245 193