Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
abs
Expand Minimize
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

random_shuffle (STL Samples) 

Illustrates how to use the random_shuffle Standard Template Library (STL) function in Visual C++.


template<class RandomAccessIterator> inline
   void random_shuffle(
      RandomAccessIterator First,
      RandomAccessIterator Last
   )

NoteNote

The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

The random_shuffle algorithm shuffles the elements of a sequence [First..Last) in a random order. The nonpredicate version uses an internal random-number generator to generate the indices of the elements to swap. The nonpredicate version of random_shuffle uses operator= to perform swaps.

// random_shuffle.cpp
// compile with: /EHsc
// Illustrates how to use the random_shuffle
// function.
//
// Functions:
//     random_shuffle : Shuffle the elements in a random order.
//////////////////////////////////////////////////////////////////////

// disable warning C4786: symbol greater than 255 character,
// okay to ignore
#pragma warning(disable: 4786)

#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>

using namespace std ;

int main() {
   const int VECTOR_SIZE = 8 ;

   // Define a template class vector of int
   typedef vector<int> IntVector ;

   //Define an iterator for template class vector of strings
   typedef IntVector::iterator IntVectorIt ;

   IntVector Numbers(VECTOR_SIZE) ;

   IntVectorIt start, end, it ;

   // Initialize vector Numbers
   Numbers[0] = 4 ;
   Numbers[1] = 10;
   Numbers[2] = 70 ;
   Numbers[3] = 30 ;
   Numbers[4] = 10;
   Numbers[5] = 69 ;
   Numbers[6] = 96 ;
   Numbers[7] = 100;

   // location of first element of Numbers
   start = Numbers.begin();

   // one past the location last element of Numbers
   end = Numbers.end();

   cout << "Before calling random_shuffle" << endl ;

   // print content of Numbers
   cout << "Numbers {" ;
   for (it = start; it != end; it++)
      cout << " " << *it;
   cout << " }" << endl ;

   // shuffle the elements in a random order
   random_shuffle(start, end) ;

   cout << "After calling random_shuffle" << endl ;

   cout << "Numbers {" ;
   for (it = start; it != end; it++)
      cout << " " << *it;
   cout << " }" << endl ;
}

Before calling random_shuffle
Numbers { 4 10 70 30 10 69 96 100 }
After calling random_shuffle
Numbers { 10 10 96 70 4 69 100 30 }

Header: <algorithm>

Community Additions

ADD
Show:
© 2015 Microsoft