推薦使用std::shuffle打亂數(shù)組,需包含<algorithm>和<random>頭文件,結(jié)合std::mt19937隨機(jī)數(shù)生成器,提供高質(zhì)量隨機(jī)性,適用于數(shù)組和vector,避免使用已棄用的std::random_shuffle。
在C++中打亂數(shù)組順序,推薦使用標(biāo)準(zhǔn)庫中的 std::shuffle 函數(shù),它是現(xiàn)代、安全且高效的方法。相比舊的隨機(jī)方式(如 std::random_shuffle,已被棄用),std::shuffle 需要傳入一個(gè)隨機(jī)數(shù)生成器,提供了更好的隨機(jī)性。
步驟如下:
#include <iostream> #include <algorithm> #include <random> int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); // 創(chuàng)建隨機(jī)數(shù)生成器,使用隨機(jī)種子 std::random_device rd; std::mt19937 gen(rd()); // 打亂數(shù)組 std::shuffle(std::begin(arr), std::end(arr), gen); // 輸出結(jié)果 for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } return 0; }
如果使用動(dòng)態(tài)數(shù)組(如 vector),方法幾乎一樣:
#include <vector> #include <algorithm> #include <random> std::vector<int> vec = {10, 20, 30, 40, 50}; std::random_device rd; std::mt19937 g(rd()); std::shuffle(vec.begin(), vec.end(), g);
避免使用已棄用的 std::random_shuffle,它依賴于全局 rand(),隨機(jī)性差且不安全。使用 std::shuffle + std::mt19937 可以獲得高質(zhì)量的隨機(jī)排列。
立即學(xué)習(xí)“C++免費(fèi)學(xué)習(xí)筆記(深入)”;
確保每次運(yùn)行程序時(shí)種子不同,建議用 std::random_device 初始化 mt19937。若需可重復(fù)結(jié)果,可固定種子,如 std::mt19937 gen(42);
基本上就這些,方法簡單又可靠。以上就是c++++中如何打亂數(shù)組順序_c++數(shù)組打亂順序方法的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
c++怎么學(xué)習(xí)?c++怎么入門?c++在哪學(xué)?c++怎么學(xué)才快?不用擔(dān)心,這里為大家提供了c++速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號