# C++ 錯誤訊息:'random_shuffle' 找不到識別項 ###### tags: `C++`, `問題記錄`, `lab 專案` 📌 **C++ 為何出現此錯誤訊息:'random_shuffle' 找不到識別項?** std::random_shuffle在 C++ 14 中已棄用,C++ 17 中移除 C++ 17 以後版本建議使用 std::shuffle 代替 std::random_shuffle 將「專案 > 屬性 > C/C++ > 語言 > C++ 語言標準」變更為 C++17 就只接受 'shuffle',不接受 'random_shuffle' 若程式中出現 'random_shuffle' 就會跳出錯誤 📌 **語法範例** ➡️ 舊版寫法: 'random_shuffle' ``` #include <locale> #include <iostream> #include <vector> #include <algorithm> int main () { // set a random seed srand(time(NULL)); // set some random numbers vector<int> arr; for (int j = 1; j < 10; ++j) arr.push_back(j); // shuffle the random numbers random_shuffle(arr.begin(), arr.end()); // print out for (auto& e : arr) { cout << e << " "; } } ``` ➡️ C++17 寫法: 'shuffle' ``` #include <locale> #include <iostream> #include <vector> #include <algorithm> #include <random> int main () { // set a random seed unsigned seed = 0; // set some random numbers vector<int> arr; for (int j = 1; j < 10; ++j) arr.push_back(j); // shuffle the random numbers shuffle(arr.begin(), arr.end(), default_random_engine(seed)); // print out for (auto& e : arr) { cout << e << " "; } } ``` 📌 **參考資料** 1. C++ STL shuffle 使用说明 https://www.jianshu.com/p/9613c764447f 2. shuffle vs. random_shuffle https://www.geeksforgeeks.org/shuffle-vs-random_shuffle-c/