Knuth重排算法

Knuth重排算法,又稱洗牌算法,費歇爾算法。是一種很簡單的洗牌算法,在遊戲工程中可能用到,在這裏整理一下。

C++實現:

void ShuffleVector(vector<int>& numbers) {

    for (int i = 0; i < numbers.size(); i++) {
        //根據系統時間設計隨機數種子,否則每次洗牌得到的結果將相同
        srand(static_cast<unsigned>(time(NULL)));
        //得到i到numbers.size()範圍內的一個隨機數
        int r = i + rand() % (numbers.size() - i);

        int tmp = numbers[i];
        numbers[i] = numbers[r];
        numbers[r] = tmp;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章