Предположим, что вы хотите перебирать последовательность [0 по n] в случайном порядке, посещая каждый элемент ровно один раз. Есть ли способ сделать это в O (1) памяти, то есть без создания последовательности [1..n] с std::iota
и запускать ее через std::random_shuffle
?
Какой-то итератор, выплевывающий последовательность в случайном порядке, был бы оптимальным.
Требование состоит в том, чтобы можно было получить другой случайный порядок, выбрав другое семя.