ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

シャッフル

配列の内容をシャッフルする関数を作った。
シャッフルするアルゴリズムはここで紹介されていたもの。
かき混ぜてはいかがでしょうか

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);
}

以前もシャッフルについて書いたことがある。そしてシャッフルするようなコードを書くときには毎回同じように悩む。