推荐使用std::shuffle打乱数组,需包含<algorithm>和<random>头文件,结合std::mt19937随机数生成器,提供高质量随机性,适用于数组和vector,避免使用已弃用的std::random_shuffle。

在C++中打乱数组顺序,推荐使用标准库中的 std::shuffle 函数,它是现代、安全且高效的方法。相比旧的随机方式(如 std::random_shuffle,已被弃用),std::shuffle 需要传入一个随机数生成器,提供了更好的随机性。
步骤如下:
#include <iostream>
#include <algorithm>
#include <random>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 创建随机数生成器,使用随机种子
std::random_device rd;
std::mt19937 gen(rd());
// 打乱数组
std::shuffle(std::begin(arr), std::end(arr), gen);
// 输出结果
for (int i = 0; i < n; ++i) {
std::cout << arr[i] << " ";
}
return 0;
}
如果使用动态数组(如 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(),随机性差且不安全。使用 std::shuffle + std::mt19937 可以获得高质量的随机排列。
立即学习“C++免费学习笔记(深入)”;
确保每次运行程序时种子不同,建议用 std::random_device 初始化 mt19937。若需可重复结果,可固定种子,如 std::mt19937 gen(42);
基本上就这些,方法简单又可靠。以上就是c++++中如何打乱数组顺序_c++数组打乱顺序方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号