/*
对现有数据生成随机序列
*/
#include<iostream>
#include<ctime>
#include<cassert>
using namespace std;
//现有数据规模
#define N 16
int main(void){
int iArr[N][2];
for (int i = 0; i < N; i++){
//第0列存放数据
iArr[i][0] = i;
//第1列存放标志,1为未读取,0为已读取
iArr[i][1] = 1;
}
srand(unsigned(time(NULL)));
//生成随机数列的组数
for (int j = N; j > 0; j--){
//初始化数据状态
for (int i = 0; i < N; i++){
iArr[i][1] = 1;
}
//time_t startTime = time(NULL);
for (int i = N; i > 0; i--){
//生成随机数
int index = rand() % i;
//查找从改位置起,状态位为1的数据下标
while (iArr[index][1] == 0){
index++;
}
assert(index < N);
//打印改位置数据,并把状态位置0
cout << iArr[index][0] << " ";
iArr[index][1] = 0;
}
//time_t endTime = time(NULL);
cout << endl;
}
return 0;
}
测试用例: