名稱空間
變體
操作

std::experimental::shuffle

來自 cppreference.com
< 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)
隨機地重排一個範圍中的元素
(函式模板) [編輯]