命名空间
变体
操作

std::experimental::shuffle

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

使用 每线程随机数引擎 作为随机数生成器,对给定范围内 [firstlast) 的元素进行重新排序,使得每个可能的排列都有相同的出现概率。

内容

[编辑] 参数

first, last - 要随机打乱的元素范围
-
RandomIt 必须满足 ValueSwappableLegacyRandomAccessIterator 的要求。

[编辑] 返回值

(无)

[编辑] 复杂度

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)
随机重新排序范围内的元素
(函数模板) [编辑]