shuffle演算法及應用
阿新 • • 發佈:2019-01-26
shuffle演算法(洗牌演算法)就是將順序打亂,一個典型的應該就是音樂播放器隨機播放,而在機器學習,資料探勘,做抽樣的時候需要shuffle, 一個好的shuffle演算法主要是保證時間複雜度是最小的
/************************************* function: shuffle author: liuyi verison:1.0 date:2015.12.18 **************************************/ #include<iostream> #include<stdlib.h> #include<vector> using namespace std; template<class T> void shuffle(vector<T>& src) { size_t len = src.size(); for(size_t i = 1; i < len; i++) { size_t j = rand() % len; T tmp = src[i]; src[i] = src[j]; src[j] = tmp; } } int main() { srand(time(NULL)); vector<int> a; for(int i = 0;i < 10; i++) a.push_back(i); for(int j = 0; j < 10; j++) { shuffle(a); for(size_t i = 0; i < a.size(); i++) cout<<a[i]<< ' '; cout<<endl; } return 0; }