#include #include #include unsigned int next_song( unsigned int *array, unsigned int n, unsigned int k ); unsigned int next_song( unsigned int *array, unsigned int n, unsigned int k ) { unsigned int i{k % n}; if ( i == (n - 1) ) { return array[0]; } else { unsigned int next{std::rand() % (n - i)}; std::swap( array[next], array[n - i - 1] ); return array[n - i - 1]; } } int main() { unsigned int const CAPACITY{17}; unsigned int song_list[CAPACITY]; for ( unsigned int i{0}; i < CAPACITY; ++i ) { song_list[i] = i; } for ( unsigned int i{0}; i < 10*CAPACITY; ++i ) { std::cout << next_song( song_list, CAPACITY, i ) << ' '; if ( (i % CAPACITY) == CAPACITY - 1 ) { std::cout << std::endl; } } }