命名空间
变体
操作

std::experimental::shuffle

来自 cppreference.cn
< cpp‎ | 实验性
定义于头文件 <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)
随机地重排一个范围中的元素
(函数模板) [编辑]