Я хотел бы использовать mt19937 для перебора массива и получения каждого значения от него ровно один раз, но в случайном порядке. По сути, есть ли способ использовать mt19937 для генерации всех чисел в определенном диапазоне ровно один раз (без просто игнорирования дубликатов, но при условии, что он не производит дубликатов вообще (ради эффективности))?Как использовать Mersenne Twister для генерации всех значений между двумя числами ровно один раз
Я рассмотрел функцию тасования, однако это только те индексы, которые меня волнуют; значения внутри массива произвольны, но их соответствующий индекс важен. У меня есть матрица из 1, и мне нужно случайным образом выбрать индекс и превратить это значение 1 в 0. Но я не хочу выполнять этот расчет больше, чем это необходимо (ровно столько же элементов, сколько и в матрице).
Посмотрите на 'shuffle'. – Jarod42
Вы сами попытались решить эту проблему? Кроме того, эта проблема не связана с конкретным движком случайных чисел, который вы используете (mt19937). – Xirema
Случайные числа генерируют дубликаты, иначе они не будут случайными. Второе предложение @ Jarod42 для поиска в ['std :: shuffle'] (http://en.cppreference.com/w/cpp/algorithm/random_shuffle). –