Freigeben über


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

Siehe auch

Referenz

Predicate Version of random_shuffle

random_shuffle (STL Samples)

Standardvorlagenbibliothek