Есть матрица M*N точек, M и N в диапазоне, скажем, от 200 до 10000. Мне нужно провести измерения в каждой точке ровно по одному разу. Измерять по строчкам или по столбцам или сдвигающейся сеткой нельзя, по некоторым причинам. Также не подходят любые другие регулярные схемы обхода точек. Нужен алгоритм, который обойдет все точки псевдослучайным образом, причем алгоритм детерминистский (измерения и расшифровка результатов происходят в разных местах, расшифровка должна восстановить порядок обхода). Генерация единичной пермутации стандартным способом не подходит: на хранение такой пермутации нужно M*N*4 байтов, причем в двух местах (стандартный способ таков: сгенерить массив чисел от 0 до K, после чего K раз свопнуть i-й элемент массива со случайным). Идеально было бы найти алгоритм типа p(i+1) = ( p(i) * a ) % (M*N), с некоторым начальным p(-1) и 'a', но где ж такой взять, чтоб все точки ровно по разу обходил, да еще и для произвольных M и N.
Идеи?
Неслучайное слово из этого поста: помощь.