カードを混ぜる
shuffle は、1 組 52 枚のカードを混ぜる関数です。
rand 関数を利用して 1 組のカードを混ぜています。
/* カードを混ぜる */
void shuffle(int stack[]) {
int i, imax;
int index; /* カード番号 */
int flag[52];/* フラグ(0:未使用 1: 使用済) */
/* time 関数により擬似乱数を初期化する */
srand((unsigned)time(NULL));
imax = 52;/* 1 組 52 枚のカード */
/* フラグを初期化する */
for (i = 0; i < imax; i++) flag[i] = 0;
/* カードを混ぜる */
for (i = 0; i < imax; i++) {
/* 未使用カードを探す */
do {
index = (int)((float)imax * rand() / (RAND_MAX + 1.0));
} while (flag[index] != 0);
/* カードを設定する */
stack[i] = index;
/* フラグを使用済にする */
flag[index] = 1;
}
};







