ни покажется на первый взгляд странным, такой алгоритм выдает достаточно хорошо перемешанную колоду. В принципе, эффективность тасования можно еще повысить, взяв вместо числа перестановок 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