在C++中,可以使用std::shuffle函數來打亂一個序列中的元素順序。std::shuffle函數接受一個指向要打亂的序列的起始迭代器和一個指向序列末尾的迭代器,以及一個隨機數生成器作為參數。下面是一個示例代碼:
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 打亂vec中的元素順序
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(vec.begin(), vec.end(), g);
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
在上面的示例中,我們先創建了一個包含1到5的整數的vector。然后使用std::random_device生成一個隨機種子,std::mt19937初始化一個隨機數生成器,最后使用std::shuffle函數打亂vector中的元素順序。
除了使用std::shuffle函數,我們還可以使用C++標準庫中的隨機數生成器來生成隨機數。例如,可以使用std::uniform_int_distribution來生成一個指定范圍內的隨機整數。下面是一個示例代碼:
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(1, 10);
for (int i = 0; i < 10; ++i) {
int rand_num = dis(gen);
std::cout << rand_num << " ";
}
return 0;
}
在上面的示例中,我們使用std::uniform_int_distribution生成1到10之間的隨機整數,并使用std::mt19937作為隨機數生成器。在循環中生成10個隨機數并輸出到控制臺。