193 名前:181 mailto:sage [2009/02/03(火) 00:40:07 ] シャッフルだけ。 大富豪以外にもカードゲームボードゲームでも同じ事するはずだから、良いソース持ってる人いるだろうケド 山のシャッフルは、短絡的に実装しました。 バグさえなければ、大雑把にCARD_NUMの2乗オーダーの計算だと思うので 10000枚とかでなければ気にする事無いと思います。 #define CARD_NUM (13*4) int main(){ int cards[CARD_NUM];// カード番号とカードの数字を対応 int yama[CARD_NUM];// カードをシャッフルして代入 int i,j,ran; srand((unsigned) time(NULL)); for(i=0;i<CARD_NUM;i++){ cards[i]=i; yama[i]=-1; } for(i=0;i<CARD_NUM;i++){ ran = rand()%(CARD_NUM); if(yama[ran]==-1) yama[ran]=i; //トランプの数字にするには yama[ran] = i/4; else i--; //やり直し } /* シャッフル検査 */ for(i=0;i<4;i++){ for(j=0;j<13;j++) printf("%2d/",yama[i*13+j]); puts(""); } return 0; }