配列の内容をシャッフルする関数を作った。
シャッフルするアルゴリズムはここで紹介されていたもの。
かき混ぜてはいかがでしょうか
template <class T> void shuffle(T* p, int num) { for(int i=num; i>0; i--) { // 入れ替え位置を乱数で計算 int rnd = rand() % i; // 入れ替え T tmp; tmp = p[rnd]; p[rnd] = p[num-1]; p[num-1] = tmp; } } // テスト int main() { srand((unsigned) time(NULL)); int p[5] = { 1,2,3,4,5 }; shuffle(p, 5); }
以前もシャッフルについて書いたことがある。そしてシャッフルするようなコードを書くときには毎回同じように悩む。