#include <iostream>
using namespace std;
template< typename CARD >
void shuffle( CARD deck[], int card_count )
{
for( int i = 0; i < card_count; ++i ) // 0 ~ card_count - 1 까지의 수를 배열에 넣음
deck[ i ] = i;
while( card_count )
{
int select = rand() % card_count--; // 카드 범위 내에서 하나를 고르고 범위를 1 줄임
std::swap( deck[ select ], deck[ card_count ] ); // 고른 카드와 범위 하나 밖의 카드를 swap
}
}
int main()
{
int cards[54];
shuffle( cards, sizeof cards / sizeof *cards );
for( const auto& card : cards )
cout << card << endl;
return 0;
}
이건 구조를 설명하기 위한 코드.
실무에서는 STL을 사용할 수 있는경우 shuffle 과 메르센트위스터 랜덤함수를 사용하길 권한다.
spade a=10, heart q=20,
bash>cat card