[C++]shuffle()で配列をシャッフルしてランダムに並び替えるには?

C++

どうも、ちょげ(@chogetarou)です。

shuffle()を使って配列(array)の要素をシャッフルしてランダムに並び替える方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

shuffle()を使って配列(array)の要素をシャッフルしてランダムに並び替えるには、3つの引数を使います。

まず、randomをインクルードします。

#include <random>

次に、shuffle()を呼び出します。

shuffle()の第1引数に配列のイテレータの先頭、第2引数に配列のイテレータの末尾を指定します。

そして、shuffle()の第3引数にstd::default_random_engine()を指定します。

//myArray=対象の配列
shuffle(std::begin(myArray), std::end(myArray), std::default_random_engine());

上記のshuffle()は、配列(array)の要素をシャッフルしてランダムに並び替えます。

std::default_random_engine()は、引数にシードを指定できます。

使用例

#include <iostream>
#include <random>
#include <ctime>
using namespace std;

int main(void){
    
    string nums[5] = { "one", "two", "three", "four", "five"};
    
   //std::default_random_engine()の引数にシードを設定
    shuffle(begin(nums), end(nums), default_random_engine(time(NULL)));
    
    for(string item: nums) {
        cout << item << endl;
    }
    
    return 0;
}
出力:
one
three
five
two
four

コメント

タイトルとURLをコピーしました