配列をランダムに並び替える方法はいろいろとあると思いますがまず簡単に思いつく方法は、配列のすべての要素をそれそれ配列のランダムな番目の要素と交換する方法です。

int intlist[100]; // 100個の整数配列をランダムに並び替える
for (int i = 0; i < 100; ++i)
{
	// リストの中のランダムな番目を取得
	int rnd = rand() % 100;
	// i 番目の要素とランダムな番目の要素を入れ替える
	int tmp = intlist[i];
	intlist[i] = intlist[rnd];
	intlist[rnd] = tmp;
}

また、動的配列として std::vector を使う場合は std::shuffle を使ってランダムに並び替えることもできます。

// 必要なヘッダー
#include <iostream>
#include <algorithm>
#include <random>

std::vector<int> intlist;
intlist.push_back(1);
intlist.push_back(2);
intlist.push_back(3);

std::random_device seed_gen;
std::mt19937 engine(seed_gen());
std::shuffle(intlist.begin(), intlist.end(), engine); // シャッフルする

for (auto val : intlist)
{
	std::cout << val << std::endl;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です