VMS Help
CXXLSTD, Algorithms, random_shuffle

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   random_shuffle  - Randomly shuffles elements of a collection.

 SYNOPSIS

   #include <algorithm>

   template <class RandomAccessIterator>
   void random_shuffle (RandomAccessIterator first,
 		       RandomAccessIterator last);

   template <class RandomAccessIterator,
 	   class RandomNumberGenerator>
   void random_shuffle (RandomAccessIterator first,
 		       RandomAccessIterator last,
 		       RandomNumberGenerator& rand);

 DESCRIPTION

   The random_shuffle algorithm shuffles	the elements in	the range
   [first, last)	with uniform distribution. random_shuffle can take a
   particular	random number generating	function object	rand ,
   where rand takes	a positive argument n of	distance type
   of the RandomAccessIterator and returns a	randomly	chosen
   value between 0 and n - 1.

 COMPLEXITY

   In the random_shuffle	algorithm, (last - first) -1 swaps are done.

 EXAMPLE

   //
   // rndshufl.cpp
   //
    #include <algorithm>
    #include <vector>
    #include <iostream.h>
   int main()
    {
      //Initialize a vector with	an array of ints
     int	arr[10]	= {1,2,3,4,5,6,7,8,9,10};
     vector<int>	v(arr, arr+10);
      //Print out elements in original (sorted) order
     cout << "Elements before random_shuffle: " << endl << "	";
     copy(v.begin(),v.end(),ostream_iterator<int,char>(cout," "));
     cout << endl << endl;
      //Mix them	up with	random_shuffle
      random_shuffle(v.begin(), v.end());
      //Print out the mixed up elements
     cout << "Elements after random_shuffle: " << endl << "     ";
     copy(v.begin(),v.end(),ostream_iterator<int,char>(cout," "));
     cout << endl;

     return 0;
    }

   Output :
   Elements before random_shuffle:
       1	2 3 4 5	6 7 8 9	10
   Elements after random_shuffle:
       7	9 10 3 2 5 4 8 1 6

 WARNING

   If your compiler does	not support default template parameters, you
   need to always supply	the Allocator template argument.  For
   instance,	you will need to write :

   vector<int, allocator<int> >

   instead of :

   vector<int>

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help