0%

随机排列产生

这学期选上了人工智能这门选修课,最后课程设计里大量用到了随机排列功能(打乱数据用的)。然而自己从来没实现过这类功能。昨天晚上偶然想起这个遗憾的事,于是自己想到一个实现,感觉很好理解也好写,在这里写一下。

道理很简单,只有3步,是个迭代过程。设要打乱的数据有n条。

  1. 判断n是否小于1。如果小于1退出。

  2. 生成1个0到n-1的随机数t,作为下标。

  3. 交换最后一条记录和第t条记录。n=n-1。回到第一步。

代码(C++):

void RandomPermu(int a[], int n){
    while(n>0){
        swap(a[rand()%n], a[n-1]);
        n--;
    }
}