在C++中高效使用shuffle可以使用std::shuffle
函數來打亂一個序列。std::shuffle
函數接受兩個迭代器參數,一個是指向要打亂的序列的起始位置的迭代器,另一個是指向要打亂的序列的末尾位置的迭代器。此外,還需要一個隨機數生成器作為第三個參數。
以下是一個示例代碼:
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用默認的隨機數生成器
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
生成隨機種子,然后使用std::mt19937
作為隨機數生成器,并將其傳遞給std::shuffle
函數來打亂序列nums
。最后,我們輸出打亂后的序列。
使用std::shuffle
函數可以高效地打亂一個序列,而不需要手動實現打亂算法。同時,通過傳遞不同的隨機數生成器,可以獲得不同的隨機結果。