📅  最后修改于: 2023-12-03 15:13:55.336000             🧑  作者: Mango
在 C++ STL 中,algorithm.random_shuffle() 函数可以用来随机打乱一个区间中的元素。所谓随机打乱,就是将这些元素随机地重新排列,使得原来有序的元素变得杂乱无章。
algorithm.random_shuffle() 函数的语法如下:
template <class RandomAccessIterator>
void random_shuffle (RandomAccessIterator first, RandomAccessIterator last);
其中:
下面是一个简单的使用示例:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> vec = {1, 2, 3, 4, 5};
std::random_shuffle(vec.begin(), vec.end());
for(auto& i : vec)
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
执行这个程序,可能得到的输出结果如下:
4 1 3 2 5
我们可以看到,vector 中原来的元素顺序被打乱了。
需要注意的是, algorithm.random_shuffle() 函数是一个非确定性函数,即针对同样的输入,可能会有不同的输出结果。这是因为在打乱元素的过程中,使用的是伪随机数算法,其结果是难以预测的。
此外,如果需要在不同的场合下得到相同的随机序列,可以考虑使用 srand() 和 rand() 等随机数生成函数。另外不要在需要使用加密性的地方使用伪随机数。
algorithm.random_shuffle() 函数可以将一个区间中的元素随机打乱,使得原来有序的元素变得杂乱无章。需要注意的是,这个函数是一个非确定性函数,结果难以预测。在需要保证随机性的情况下,可以使用 srand() 和 rand() 等随机数生成函数。