random_shuffle
Материал из cppreference.com
Синтаксис:
#include <algorithm> void random_shuffle( random_access_iterator start, random_access_iterator end ); void random_shuffle( random_access_iterator start, random_access_iterator end, RandomNumberGenerator& rnd );
Функция random_shuffle() переставляет случайным образом элементы в диапазоне [start,end). Если поддерживается функция-объект случайной генерации чисел, она используется вместо внутреннего генератора случайных чисел.
Внутренний генератор случайных чисел - не обязательно тот, который используется в функции rand() или srand(). Для него определена специальная реализация. Например, реализация SGI STL использует другой генератор.
Пример:
// Пример random_shuffle #include <iostream> #include <algorithm> #include <functional> #include <vector> #include <ctime> #include <cstdlib> using namespace std; // Функция случайной генерации чисел: ptrdiff_t myrandom (ptrdiff_t i) { return rand()%i;} // указатель на генератор: ptrdiff_t (*p_myrandom)(ptrdiff_t) = myrandom; int main () { srand ( unsigned ( time (NULL) ) ); vector<int> myvector; vector<int>::iterator it; // Задание значений: for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9 // использование встроенного генератора: random_shuffle ( myvector.begin(), myvector.end() ); // использование myrandom: random_shuffle ( myvector.begin(), myvector.end(), p_myrandom); // вывод содержимого: cout << "myvector contains:"; for (it=myvector.begin(); it!=myvector.end(); ++it) cout << " " << *it; cout << endl; return 0; }
Возможный вывод: myvector contains: 3 4 1 6 8 9 2 7 5
Смотрите также: next_permutation, prev_permutation, random_sample, random_sample_n