shuffle算法及应用

来源:互联网 发布:java应届自我介绍 编辑:程序博客网 时间:2024/05/01 09:43

shuffle算法(洗牌算法)就是将顺序打乱,一个典型的应该就是音乐播放器随机播放,而在机器学习,数据挖掘,做抽样的时候需要shuffle, 一个好的shuffle算法主要是保证时间复杂度是最小的


/*************************************function: shuffleauthor: liuyiverison:1.0date: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;}


0 1