如何在C++中高效使用shuffle

c++
小樊
113
2024-07-13 04:33:22

在C++中高效使用shuffle可以使用std::shuffle函數(shù)來(lái)打亂一個(gè)序列。std::shuffle函數(shù)接受兩個(gè)迭代器參數(shù),一個(gè)是指向要打亂的序列的起始位置的迭代器,另一個(gè)是指向要打亂的序列的末尾位置的迭代器。此外,還需要一個(gè)隨機(jī)數(shù)生成器作為第三個(gè)參數(shù)。

以下是一個(gè)示例代碼:

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

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5};

    // 使用默認(rèn)的隨機(jī)數(shù)生成器
    std::random_device rd;
    std::mt19937 gen(rd());

    // 打亂序列
    std::shuffle(nums.begin(), nums.end(), gen);

    // 輸出打亂后的序列
    for (int num : nums) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的示例中,我們使用std::random_device生成隨機(jī)種子,然后使用std::mt19937作為隨機(jī)數(shù)生成器,并將其傳遞給std::shuffle函數(shù)來(lái)打亂序列nums。最后,我們輸出打亂后的序列。

使用std::shuffle函數(shù)可以高效地打亂一個(gè)序列,而不需要手動(dòng)實(shí)現(xiàn)打亂算法。同時(shí),通過(guò)傳遞不同的隨機(jī)數(shù)生成器,可以獲得不同的隨機(jī)結(jié)果。

0