One approach:
v1 = randperm(24);
Out = [v1; circshift(v1, [0 randi(length(v1)-1)])];
It takes the first vector (first row) and circularly shifts it by a random number of positions to create the second row. So long as the shift argument to circshift is not 0 or equal to the length of the vector, the positions will never be the same in the two vectors.
Best Answer