游戏算法——Knuth重排

Knuth重排算法,又称洗牌算法,费歇尔算法。是一种很简单的洗牌算法,在游戏工程中可能用到,在这里整理一下。

C++实现:

void ShuffleVector(vector& numbers) {

	for (int i = 0; i < numbers.size(); i++) {
	
		//根据系统时间设计随机数种子,否则每次洗牌得到的结果将相同
		srand(static_cast(time(NULL)));
		
		//得到i至numbers.size()范围内的一个随机数
		int r = i + rand() % (numbers.size() - i);

		int tmp = numbers[i];
		numbers[i] = numbers[r];
		numbers[r] = tmp;
	}
}

你可能感兴趣的:(算法,Unity3D)