C++實現隨機洗牌算法


隨機洗牌算法就是讓一組數據隨機出現。

#include <iostream>
#include <vector>
#include <ctime>
#include <cstdio>
using namespace std;

// 隨機洗牌算法
void shuffle(vector<int>& vec)
{
    int n = vec.size();
    if(n <= 0)
        return ;
    srand(time(0));

    for(int i = 0; i < n; i++)
    {
        //保證每次第i位的值不會涉及到第i位以前
        int index = i + rand()%(n-i);
        swap(vec[index], vec[i]);
    }
}

int main()
{
    vector<int> vec;
    for(int i = 1; i <= 10; i++)
    {
        vec.push_back(i);
    }
    shuffle(vec);

    for(auto it : vec)
            cout << it << " ";
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM