14 lines
342 B
C++
14 lines
342 B
C++
#include <cstdlib>
|
|
#include <algorithm>
|
|
#include <iterator>
|
|
|
|
template<typename RandomAccessIterator>
|
|
void knuthShuffle(RandomAccessIterator begin, RandomAccessIterator end) {
|
|
for(unsigned int n = end - begin - 1; n >= 1; --n) {
|
|
unsigned int k = rand() % (n + 1);
|
|
if(k != n) {
|
|
std::iter_swap(begin + k, begin + n);
|
|
}
|
|
}
|
|
}
|