Шаблонна функція random_shuffle призначена для зміни порядку елементів послідовності на псевдо-випадковий. Оголошення функції виглядає наступним чином:
template <class RandomAccessIterator>
void random_shuffle (RandomAccessIterator begin, RandomAccessIterator end) ;
Параметри begin i end призначені для вказування проміжку, в якому повинна бути виконана псевдо-випадкова зміна порядку.
Фунція виконує обмін значеннями елементів послідовності. Дана версія функції використовує не визначене джерелло псевдо-випадкових велечин.
Щоб використовувати дану функцію необхідно підключити файл algorithm:
#include <algorithm> /* усе корисне разом з random_shuffle */
Приклад
Розглянемо простий приклад використання методу random_shuffle над послідовністю вектора.
#include <iostream> /* об'єкт cout */
#include <algorithm> /* функція random_shuffle */
#include <vector> /* клас vector */
using namespace std ; /* друкуємо усе без std */
/* головна функція програми */
int main (int argc, char** argv)
{
/* створюємо примірники піддослідного вектора */
vector <int> v1 ;
/* заповнюємо вектор послідовністю
** і виводимо її у термінал */
/* увага! кирилиця може некоректно
** відображатись у терміналі! */
cout << "Оригінал:" << endl ;
for (unsigned int iter=1; iter<=20; ++iter)
{
v1.push_back (iter) ;
cout << *(v1.end()-1) << "; " ;
}
cout << endl ;
/* виконуємо змішування елементів */
random_shuffle (v1.begin(), v1.end()) ;
/* виводимо новий порядок елементів */
/* увага! кирилиця може некоректно
** відображатись у терміналі! */
cout << "Новий порядок: " << endl ;
for (vector<int>::iterator iter=v1.begin(); iter<v1.end(); ++iter)
{ cout << *iter << "; " ; }
cout << endl ;
return 0 ;
}
Вивід програми: