random_shuffle
函數在 C++17 中已被棄用,并在 C++20 中被移除。取而代之的是 std::shuffle
函數,它使用隨機數生成器來打亂容器中的元素。為了避免產生重復的結果,你可以使用 std::mt19937
作為隨機數生成器,并為其提供一個基于時間的種子。這樣,每次運行程序時,都會得到不同的隨機結果。
以下是一個使用 std::shuffle
的示例:
#include<iostream>
#include<vector>
#include<random>
#include<chrono>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 使用基于時間的種子初始化隨機數生成器
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::mt19937 random_engine(seed);
// 使用 std::shuffle 打亂容器中的元素
std::shuffle(numbers.begin(), numbers.end(), random_engine);
// 輸出打亂后的元素
for (int num : numbers) {
std::cout<< num << " ";
}
std::cout<< std::endl;
return 0;
}
這段代碼首先創建一個包含 1 到 10 的整數向量。然后,它使用基于時間的種子初始化 std::mt19937
隨機數生成器。最后,它使用 std::shuffle
函數打亂向量中的元素,并將結果輸出到控制臺。每次運行此程序時,都會得到不同的隨機結果。