а можно алгоритм, что нужно сделать чтобы таким образом получить координаты
не важно из чего исходя подойдет любой способ
Если исходить из номера элемента, я бы для простоты взял такую функцию.
Для начала стоило бы избавиться от двумерности массива, чтобы не городить два хэша - для строк и столбцов. Если представить массив N*M как линейный соответствующей длины, то можно будет обойтись одним-единственным индексом.
Теперь осталось определить саму хэш-функцию. Предположим для простоты, что размер нашего одномерного массива кратен степени 2 (скажем, 2^n). Тогда, если мы хотим распределить элементы данных максимально равномерно, имеет смысл инвертировать порядок n первых бит индекса.
Пример: n=8, число элементов массива N=2^8=256. Тогда хэш-функция H(i) будет выглядеть так:
H(0) = H(00000000) = 00000000 = 0
H(1) = H(00000001) = 10000000 = 128
H(2) = H(00000010) = 01000000 = 64
H(3) = H(00000011) = 11000000 = 192
...
То есть сначала массив делится пополам, потом каждая половина - еще раз пополам и т.д.
Если задача все же обязательно требует, чтобы массив был двумерный, то придется поделить значение хэш-функции на длину строки массива. Тогда частное даст номер строки, а остаток от деления - номер столбца.