参考链接:【洗牌算法】C++将数组的元素顺序随机打乱(条件概率证明算法充分随机)
使用模板类封装,输出打乱的vector
template <class T>
vector<T> RandomVectorV2(vector<T>oldArray) //, vector<T> &newArray
{//返回打乱vector。zph 2022.3.26
vector<T> newArray;
// 随机打乱
for (int i = oldArray.size(); i > 0; i--) {
srand(unsigned(time(NULL)));
// 选中的随机下标
int index = rand() % i;
// 根据选中的下标将原数组选中的元素push到新数组
newArray.push_back(oldArray[index]);
// 将原数组中选中的元素剔除
oldArray.erase(oldArray.begin() + index);
}
return newArray;
}