どうも、ちょげ(@chogetarou)です。
リスト(List)の要素をランダムに取得する方法を紹介します。
方法

リスト(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
コメント