18 #ifndef INCLUDED_numeric_random_random_permutation_hh
19 #define INCLUDED_numeric_random_random_permutation_hh
44 Size const vsize = vect.size();
48 T temp = vect[ swap_partner ];
49 vect[ swap_partner ] = vect[
ii ];
61 Size const vsize = vect.size();
65 T temp = vect[ swap_partner ];
66 vect[ swap_partner ] = vect[
ii ];
75 std::vector< T > & vect,
79 Size const vsize = vect.size();
83 T temp = vect[ swap_partner ];
84 vect[ swap_partner ] = vect[
ii ];
91 template<
typename RandomAccessIterator >
94 RandomAccessIterator
first,
95 RandomAccessIterator last,
99 if ( first != last ) {
100 for ( RandomAccessIterator i = first + 1; i != last; ++i ) {
101 std::iter_swap( i, first + static_cast< Size >( ( i - first + 1 ) * rg.
uniform() ) );
111 #endif // INCLUDED_numeric_random_random_permutation_HH
RandomGenerator & rg()
Return the one-per-thread "singleton" random generator.
vector0: std::vector with assert-checked bounds
void random_permutation(utility::vector1< T > &vect, RandomGenerator &rg)
Random number generator system.
Random number generator system.
vector1: std::vector with 1-based indexing