Compartilhar via


random_shuffle

Reordena uma seqüência de elementos de N em um intervalo em um de Em!organizações possíveis selecionada aleatoriamente.

template<class RandomAccessIterator>
   void random_shuffle(
      RandomAccessIterator _First, 
      RandomAccessIterator _Last
   );
template<class RandomAccessIterator, class RandomNumberGenerator>
   void random_shuffle(
      RandomAccessIterator _First, 
      RandomAccessIterator _Last, 
      RandomNumberGenerator& _Rand
   );

Parâmetros

  • _First
    Um iterador de acesso aleatório que trata a posição do primeiro elemento no intervalo ser reorganizados.

  • _Last
    Um iterador de acesso aleatório que trata a posição uma após o elemento final no intervalo ser reorganizados.

  • _Rand
    Um objeto de função especial chamado um gerador de número aleatório.

Comentários

As duas versões de funções diferem em como geram números aleatórios.A primeira versão usa um gerador de número aleatório interno e o segundo um objeto de função do gerador de número aleatório explicitamente que é passado e pode aceitar um valor semente.

Exemplo

// 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;
}

A saída de exemplo

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 ).

Requisitos

Cabeçalho: <algorithm>

namespace: STD

Consulte também

Referência

Predicate Version of random_shuffle

random_shuffle (STL Samples)

Standard Template Library