Алгоритм random_shuffle()
template < class RandomAccessIterator > void random_shuffle( RandomAccessIterator first, RandomAccessIterator last ); template < class RandomAccessIterator, class RandomNumberGenerator > void random_shuffle( RandomAccessIterator first, RandomAccessIterator last, |
RandomNumberGenerator rand);
random_shuffle()
переставляет элементы из диапазона [first,last) в случайном порядке. Во втором варианте можно передать объект-функцию или указатель на функцию, генерирующую случайные числа. Ожидается, что генератор rand возвращает значение типа double в интервале [0,1].
#include <algorithm> #include <vector> #include <iostream.h>
int main() { vector< int, allocator > vec; for ( int ix = 0; ix < 20; ix++ ) vec.push_back( ix );
random_shuffle( vec.begin(), vec.end() );
// печатает: // random_shuffle для последовательности 1 .. 20: // 6 11 9 2 18 12 17 7 0 15 4 8 10 5 1 19 13 3 14 16 cout << "random_shuffle для последовательности 1 .. 20:\n"; copy( vec.begin(), vec.end(), ostream_iterator< int >( cout," " )); |
}