C++ 算法 random_shuffle() 函数
定义和用法
random_shuffle()
函数用于随机重排数据范围内的元素顺序。
数据范围通过迭代器指定。
注意:若不设置随机种子,示例可能每次产生相同的排列顺序。
如需获得不同的随机排序,可以使用 srand()
函数初始化随机数生成器。为确保每次运行获得不同顺序,建议使用当前时间作为随机种子(如下面的例子所示)。
例子 1
随机重排 vector 元素:
vector<int> numbers = {1, 2, 3, 5, 7, 9}; random_shuffle(numbers.begin(), numbers.end()); for (int number : numbers) { cout << number << " "; // 可能输出:9 2 7 5 1 3 }
例子 2
确保每次运行获得不同随机顺序:
vector<int> numbers = {1, 2, 3, 5, 7, 9}; srand(time(NULL)); // 以当前时间初始化随机种子 random_shuffle(numbers.begin(), numbers.end()); for (int number : numbers) { cout << number << " "; // 每次运行输出不同顺序 }
语法
random_shuffle(iterator start, iterator end);
参数
参数 | 描述 |
---|---|
start | 必需。指向数据范围起始位置的迭代器。 |
end |
必需。指向数据范围结束位置的迭代器。 将重排该位置之前的所有元素。 |
技术细节
- 该函数不返回任何值,直接修改原始数据
- 在 C++17 中已被标记为废弃,建议改用 shuffle() 函数配合随机数引擎
- 时间复杂度为 O(n),其中 n 是数据范围的大小
相关页面
教程:C++ 数据结构
教程:C++ 迭代器
教程:C++ 算法