[C++]リストの要素をランダムに取得するには?

C++

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

リスト(List)の要素をランダムに取得する方法を紹介します。

スポンサーリンク

方法

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

リスト(List)の要素をランダムに取得するには、rand()を使います。

まず、rand()をリストの要素数で割った余りを取得します。

そして、リストの取得した余りのインデックスにアクセスします。

//myList=対象のリスト
int index = rand() % myList.size(); //ランダムなインデックスを取得
T result = *next(myList.begin(), index) //要素をランダムに取得

上記のインデックスにアクセスすることで、リスト(List)の要素をランダムに取得できます。

使用例

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

int main(void){
    
    list<int> nums = { 11, 2, 8, 20, 7, 4 };
    
    srand(time(NULL));
    
    for (int i = 0; i < 5; i++) {
        cout << *next(nums.begin(), rand() % nums.size()) << endl;
    }
    
    return 0;
}
出力:
8
8
8
11
20

コメント

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