Я хотел бы использовать mt19937 для перебора массива и извлечения из него каждого значения ровно один раз, но в случайном порядке. По сути, есть ли способ использовать mt19937 для генерации всех чисел в определенном диапазоне ровно один раз (не просто игнорируя дубликаты, но гарантируя, что он не будет создавать дубликаты вообще (ради эффективности))?
Я рассмотрел функцию перемешивания, однако меня интересуют только индексы; значения в массиве произвольны, но важен их соответствующий индекс. У меня есть матрица из 1, и мне нужно случайным образом выбрать индекс и превратить эту 1 в 0. Но я не хочу выполнять этот расчет больше, чем необходимо (ровно столько элементов, сколько есть в матрице).
shuffle
. - person Jarod42   schedule 09.01.2017std::shuffle
. - person Mark Ransom   schedule 09.01.2017