📜  C++ STL-algorithm.random_shuffle()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.336000             🧑  作者: Mango

C++ STL- algorithm.random_shuffle() 函数介绍

在 C++ STL 中,algorithm.random_shuffle() 函数可以用来随机打乱一个区间中的元素。所谓随机打乱,就是将这些元素随机地重新排列,使得原来有序的元素变得杂乱无章。

语法

algorithm.random_shuffle() 函数的语法如下:

template <class RandomAccessIterator>
void random_shuffle (RandomAccessIterator first, RandomAccessIterator last);

其中:

  • first, last:表示一个区间,区间的元素将被随机打乱。这个区间必须是一个随机访问迭代器所表示的范围,即需要支持随机访问、迭代器加减操作等能力。例如,可以是一个 vector 或数组。
示例

下面是一个简单的使用示例:

#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() 等随机数生成函数。