怎樣在C++中實(shí)現(xiàn)自定義shuffle

c++
小樊
90
2024-07-13 04:37:26
欄目: 編程語言

要在C++中實(shí)現(xiàn)自定義的shuffle函數(shù),你可以借助C++標(biāo)準(zhǔn)庫中的隨機(jī)數(shù)生成器和算法來實(shí)現(xiàn)。以下是一個(gè)示例代碼:

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

// 自定義shuffle函數(shù)
template <typename T>
void custom_shuffle(std::vector<T> &vec) {
    std::random_device rd;
    std::mt19937 g(rd());
    
    std::shuffle(vec.begin(), vec.end(), g);
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    
    std::cout << "Before shuffle: ";
    for (const auto &num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    
    custom_shuffle(vec);
    
    std::cout << "After shuffle: ";
    for (const auto &num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

在這個(gè)示例代碼中,我們定義了一個(gè)自定義的shuffle函數(shù)custom_shuffle,它接受一個(gè)vector作為參數(shù),并使用std::shuffle函數(shù)來打亂vector中元素的順序。我們使用std::random_device和std::mt19937來生成隨機(jī)數(shù)生成器,并將其傳遞給std::shuffle函數(shù)來確保每次打亂的結(jié)果都是隨機(jī)的。

在main函數(shù)中,我們創(chuàng)建一個(gè)包含1到5的整數(shù)的vector,并調(diào)用custom_shuffle函數(shù)來打亂vector中元素的順序。最后,我們打印出打亂前后vector的元素順序來驗(yàn)證自定義的shuffle函數(shù)的效果。

0