这学期选上了人工智能这门选修课,最后课程设计里大量用到了随机排列功能(打乱数据用的)。然而自己从来没实现过这类功能。昨天晚上偶然想起这个遗憾的事,于是自己想到一个实现,感觉很好理解也好写,在这里写一下。
道理很简单,只有3步,是个迭代过程。设要打乱的数据有n条。
判断n是否小于1。如果小于1退出。
生成1个0到n-1的随机数t,作为下标。
交换最后一条记录和第t条记录。n=n-1。回到第一步。
代码(C++):
void RandomPermu(int a[], int n){
while(n>0){
swap(a[rand()%n], a[n-1]);
n--;
}
}