カードを混ぜる
shuffle は、1 組 52 枚のカードを混ぜる関数です。
rand 関数を利用して、1 組のカードを混ぜています。
/* カードを混ぜる */
void shuffle(int *stack) {
int i;
int *flag;/* フラグ(0:未使用 1: 使用済) */
/* 動的領域を確保する */
flag = (int *)malloc(sizeof(int) * IMAX * NDECK);
if (flag == NULL) {
printf("Memory Allocation Error!\n");
exit(1);/* 異常終了 */
}
/* 配列を初期化する */
for (i = 0; i < IMAX * NDECK; i++) flag[i] = 0;
/* time 関数により擬似乱数を初期化する */
srand((unsigned)time(NULL));
/* カードを混ぜる */
for (i = 0; i < IMAX * NDECK; i++) {
int index;/* カード番号 */
/* 未使用カードを探す */
do {
/* rand は 0 以上 RAND_MAX 以下の整数を返す */
index = (int)((float)IMAX * NDECK * rand() / (RAND_MAX + 1.0));
} while (flag[index] != 0);
/* カードを設定する */
stack[i] = index;
/* フラグを使用済にする */
flag[index] = 1;
}
/* 動的領域を解放する */
free(flag);
}
- トランプ・ポーカー
- トランプ・ブラックジャック
- ギャンブルから株式為替まで役立つ資金管理
- 株式投資や為替取引のリスクマネジメント
- カード被害が預金者保護法で補償された体験
- アニメで英会話/台詞逆輸入
- 右脳と左脳を鍛える開発トレーニング