std::shuffle
时间: 2023-10-21 11:06:33 浏览: 154
std::shuffle是一个用于随机打乱元素顺序的函数。它使用一个均匀随机数生成器(URBGs)作为参数,并在给定的范围内随机交换元素的位置,从而实现打乱顺序的效果。
具体地说,std::shuffle函数接受三个参数:一个表示范围起始位置的迭代器first,一个表示范围结束位置的迭代器last,以及一个URBGs类型的参数g作为随机数生成器。
在函数内部,std::shuffle使用std::uniform_int_distribution生成均匀分布的随机数,并使用这些随机数来随机交换范围内的元素。通过多次迭代和交换,std::shuffle实现了将范围内的元素打乱的效果。
下面是一个示例代码,展示了如何使用std::shuffle函数随机打乱一个vector容器的元素顺序:
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
int main() {
std::vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::random_device rd;
std::shuffle(v.begin(), v.end(), rd);
for (int i = 0; i < v.size(); i++) {
std::cout << v[i] << " ";
}
std::cout << std::endl;
// 输出结果类似: 8 3 5 2 0 9 1 6 4 7
return 0;
}
在上面的示例代码中,我们使用std::random_device作为随机数生成器,并使用std::shuffle函数将vector v中的元素随机打乱。最后,我们通过循环遍历输出打乱后的元素顺序。
阅读全文