Valera Fooksman (oxfv) wrote,
Valera Fooksman
oxfv

Помощь зала

Бояре, помогите решить рабочую задачу, или хотя бы подскажите терминологию.

Есть матрица 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.

Идеи?


Неслучайное слово из этого поста: помощь.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 35 comments