替代random_shuffle的現(xiàn)代方法

小樊
94
2024-07-04 11:10:20

C++17中已經(jīng)棄用了std::random_shuffle函數(shù),推薦使用std::shuffle函數(shù)作為替代方法。std::shuffle函數(shù)提供了更好的隨機(jī)性和靈活性,并且更易于使用。

以下是使用std::shuffle函數(shù)來(lái)替代std::random_shuffle函數(shù)的示例代碼:

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    
    // 設(shè)置隨機(jī)數(shù)生成器
    std::random_device rd;
    std::mt19937 g(rd());
    
    // 使用std::shuffle來(lái)打亂順序
    std::shuffle(vec.begin(), vec.end(), g);
    
    // 打印打亂后的順序
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

在上面的示例中,我們首先設(shè)置了一個(gè)隨機(jī)數(shù)生成器g,然后使用std::shuffle函數(shù)來(lái)打亂vec中元素的順序。最后,我們打印出打亂后的順序。

通過(guò)使用std::shuffle函數(shù),我們可以更加方便地實(shí)現(xiàn)打亂順序的功能,并且提供了更好的隨機(jī)性。

0