Пространства имён
Варианты
Действия

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