RosettaCodeData/Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp
2023-07-01 13:44:08 -04:00

13 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);
}
}
}