random_shuffle
Ordnet eine Sequenz von N-Elementen in einem Bereich in einen von N neu!mögliche Anordnungen zufällig ausgewählt.
template<class RandomAccessIterator>
void random_shuffle(
RandomAccessIterator _First,
RandomAccessIterator _Last
);
template<class RandomAccessIterator, class RandomNumberGenerator>
void random_shuffle(
RandomAccessIterator _First,
RandomAccessIterator _Last,
RandomNumberGenerator& _Rand
);
Parameter
_First
Ein Iterator mit wahlfreier Zugriff, der die Position des ersten Elements im Bereich behandelt neu angeordnet werden._Last
Ein Iterator mit wahlfreier Zugriff, der die Position eine hinter dem letzten Element im Bereich behandelt neu angeordnet werden._Rand
Ein besonderes Funktionsobjekt bezeichnet einen Zufallszahlengenerator.
Hinweise
Die beiden Versionen der Funktion unterscheiden sich in, wie sie Zufallszahlen generieren.Die erste Version verwendet einen internen Zufallszahlengenerator und der zweite ein Zufallszahlengeneratorfunktionsobjekt, das explizit übergeben wird und einen Anfangswert akzeptieren kann.
Beispiel
// alg_random_shuffle.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
int main( ) {
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1, Iter2;
int i;
for ( i = 1 ; i <= 9 ; i++ )
v1.push_back( i );
random_shuffle( v1.begin( ), v1.end( ) );
cout << "The original version of vector v1 is: ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
// Shuffled once
random_shuffle( v1.begin( ), v1.end( ));
push_heap( v1.begin( ), v1.end( ) );
cout << "Vector v1 after one shuffle is: ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
// Shuffled again
random_shuffle( v1.begin( ), v1.end( ));
push_heap( v1.begin( ), v1.end( ) );
cout << "Vector v1 after another shuffle is: ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
}
Beispielausgabe
The original version of vector v1 is: ( 9 2 7 3 1 6 8 4 5 ).
Vector v1 after one shuffle is: ( 1 4 7 9 2 5 8 6 3 ).
Vector v1 after another shuffle is: ( 3 2 8 5 4 9 6 7 1 ).
Anforderungen
Header: <algorithm>
Namespace: std