shuffle は、1 組 52 枚のカードを混ぜる関数です。
rand 関数を利用して 1 組のカードを混ぜています。
/* カードを混ぜる */
void shuffle(char stack[52][4]) {
int i, imax;
int index; /* カード番号 */
char deck[52][4] = {/* 1 組 52 枚のカード */
"S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10",
"S11", "S12", "S13",
"H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10",
"H11", "H12", "H13",
"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10",
"D11", "D12", "D13",
"C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10",
"C11", "C12", "C13"
};
/* time 関数により擬似乱数を初期化する */
srand((unsigned)time(NULL));
imax = 52;/* 1 組 52 枚のカード */
/* deck から 1 枚ずつ stack に移動する */
for (i = 0; i < imax; i++) {
/* 未使用カードを探す */
do {
index = (int)((float)imax * rand() / (RAND_MAX + 1.0));
} while (deck[index][0] == '\0');
/* カードを設定する */
strcpy(stack[i], deck[index]);
/* 使用済にする */
deck[index][0] = '\0';
}
};







