遊戲算法——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;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章