First what is magic(2)? I thought the smallest magic matrix comes (3-by-3) since Magic (2) doesn't satisfy the condition (sum each row=sum each column=sum each diagonal=const.). But I think you meant any matrix with possible permutation, anyway.
For a magic matrix, when you could replace such an element by an integer, selected between 1 and n^2 (n being the size of magic(n) ), it will probably be the same value in order to keep the properties of the original matrix the same.
If this condition is to be ignored in the resulting matrix, then try to initiate a (flag matrix) which is the same size as the original matrix but with all elements zeros. It works as:
- During a simple read loop, when the permutation occurs, flag stores the first permuted elements as (1,1) the second as (2,2).. etc.
- In a second loop, select or generate random integers as required, and replace the flagged elements with them.
- In a third loop, replace the remaining zeros of the flag matrix with elements from the original matrix. The flag matrix will be the required one (tho it will absolutely posses different properties than the original one).