📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

330行目: 330行目:
  arr:      1; 2; 3; 4; 5; 6;
  arr:      1; 2; 3; 4; 5; 6;
  arr:      4; 5; 6; 1; 2; 3;
  arr:      4; 5; 6; 1; 2; 3;
<br><br>
== 要素の並べ替え(ランダム) ==
std::shuffleを使用して、要素の各順列が等しい確率を持つように、範囲内の要素をランダムに並べ替えることができる。<br>
<br>
この関数は、範囲の開始イテレータと終了イテレータの少なくとも2つの引数が必要である。<br>
また、乱数ジェネレータ関数を表す第3引数を指定することもできる。<br>
<br>
以下の例では、第3引数において、randomヘッダにあるmersenne_twister_engineを使用している。<br>
<syntaxhighlight lang="c++">
#include <iostream>
#include <iterator>
#include <iomanip>
#include <random>
#include <vector>
int main()
{
    std::vector<int> arr = {1, 2, 3, 4, 5, 6};
    std::cout << std::left << std::setw(10) << "arr: ";
    copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout,"; "));
    std::cout << std::endl;
    // vecotorの要素をランダムに並べ替える
    std::shuffle(arr.begin(), arr.end(), std::mt19937(std::random_device()()));
    std::cout << std::left << std::setw(10) << "arr: ";
    copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout,"; "));
    std::cout << std::endl;
    return EXIT_SUCCESS;
}
</syntaxhighlight>
<br>
// 出力例
arr:      1; 2; 3; 4; 5; 6;
arr:      5; 1; 4; 6; 2; 3;
<br><br>
<br><br>