std::experimental::shuffle

来自cppreference.com
在标头 <experimental/algorithm> 定义
template< class RandomIt >
void shuffle( RandomIt first, RandomIt last );
(库基础 TS v2)

重排序给定范围 [firstlast) 中的元素,使得这些元素的每个可能排列拥有相等的出现概率,以逐线程引擎为随机数生成器。

参数

first, last - 要随机混洗的元素范围
-
RandomIt 必须满足可交换值 (ValueSwappable) 老式随机访问迭代器 (LegacyRandomAccessIterator)

返回值

(无)

复杂度

firstlast 间的距离成线性。

示例

#include <experimental/algorithm>
#include <iostream>
#include <string>
 
int main()
{
    std::string sample{"ABCDEF"};
 
    for (int i = 0; i != 4; ++i)
    {
        std::experimental::shuffle(sample.begin(), sample.end());
        std::cout << sample << '\n';
    }
}

可能的输出:

DACBFE
CDFBAE
BDCAFE
BAFCED

参阅

(C++17 前)(C++11)
随机重排范围中的元素
(函数模板)