Your data isn't well formed, so I made an assumption:
theMatrix = ArrayReshape[Range[100], {10, 10}]
Choosing any item from each row satisfies the unique row constraint. Satisfying the column constraint means that, as we choose items from each row, we must use each index in the range 1..n exactly once. So, we can create the column indices like this:
theIndices = RandomSample[Range@10, 10]
Now, we just need to take the items theMatrix[[1,theIndices[[1]]]]
, theMatrix[[2,theIndices[[2]]]
, etc. One straightforward way to do that would be with MapThread:
MapThread[Take, {theMatrix, List /@ theIndices}]
You could also build up the 2-d indices first and use Extract:
thePositions = Transpose[{Range@10, RandomSample[Range@10, 10]}];
Extract[theMatrix, thePositions]
I don't know what format you want your result in.
NOTE
user293787's answer reminded me that you don't need to specify the second argument in RandomSample if you want a random permutation of the list. So, all of my RandomSample[Range@10, 10]
above could be replaced with RandomSample[Range@10]
.