proc iml; /* Algorithm to generate random gift exchange */ N = 10; /* Person_1 Spouse_1 ... Person_5 Spouse_5 */ names = {P1 Sp1 P2 Sp2 P3 Sp3 P4 Sp4 P5 Sp5}; Valid = {0 0 1 1 1 1 1 1 1 1, 0 0 1 1 1 1 1 1 1 1, 1 1 0 0 1 1 1 1 1 1, 1 1 0 0 1 1 1 1 1 1, 1 1 1 1 0 0 1 1 1 1, 1 1 1 1 0 0 1 1 1 1, 1 1 1 1 1 1 0 0 1 1, 1 1 1 1 1 1 0 0 1 1, 1 1 1 1 1 1 1 1 0 0, 1 1 1 1 1 1 1 1 0 0 }; /* create permutation matrix from permutation, v */ start GetPermutationMatrix(v); n = ncol(v); P = j(n, n, 0); do i = 1 to n; P[i, v[i]] = 1; end; return (P); finish; NumYears = 10; v = j(NumYears, N); /* to store valid permutations */ /* create random permutation of 1:N */ call randseed(12252011); /* set random seed; I used 12/25/2011 */ do Year = 1 to NumYears; s = 0; do while(s