random_shuffle の使用方法です.
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;
int rand_gen(int num)
{
double x = (double)rand() / RAND_MAX;
return (int)(num * x);
}
int main()
{
vector<int> v1, v2;
vector<int>::iterator it;
// 初期設定
printf("**初期状態 v1**\n");
for (int i1 = 0; i1 < 10; i1++)
v1.push_back(i1+1);
for (it = v1.begin(); it != v1.end(); it++)
printf(" %d", *it);
printf("\n");
printf("**初期状態 v2**\n");
for (int i1 = 0; i1 < 10; i1++)
v2.push_back(10*(i1+1));
for (it = v2.begin(); it != v2.end(); it++)
printf(" %d", *it);
printf("\n");
// v1 をランダムに並び替える
printf("v1 をランダムに並び替える\n");
random_shuffle(v1.begin(), v1.end());
for (it = v1.begin(); it != v1.end(); it++)
printf(" %d", *it);
printf("\n");
// v2 をランダムに並び替える(乱数発生関数指定)
printf("v2 をランダムに並び替える(乱数発生関数指定)\n");
random_shuffle(v2.begin(), v2.end(), rand_gen);
for (it = v2.begin(); it != v2.end(); it++)
printf(" %d", *it);
printf("\n");
return 0;
}
(出力)
**初期状態 v1**
1 2 3 4 5 6 7 8 9 10
**初期状態 v2**
10 20 30 40 50 60 70 80 90 100
v1 をランダムに並び替える
9 2 10 3 1 6 8 4 5 7
v2 をランダムに並び替える(乱数発生関数指定)
90 20 70 100 40 50 10 30 80 60