Шаблонна функція 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 ; 
}
Вивід програми: cpp_std_random_shuffle_sample1-cxx
Категорії: