Permutes the values of the arguments, and returns a random permutation of k out of n values.
Category: | Combinatorial |
is a numeric variable that contains the random number seed. For more information about seeds, see Seed Values.
is the number of values that you want to have in the random permutation.
specifies all numeric variables, or all character variables that have the same length. K values of these variables are randomly permuted.
data _null_; array x x1-x5 (1 2 3 4 5); seed = 1234567890123; do n=1 to 10; call ranperk(seed, 3, of x1-x5); put seed= @20 ' x= ' x1-x3; end; run;
seed=1332351321 x= 5 4 2 seed=829042065 x= 4 1 3 seed=767738639 x= 5 1 2 seed=1280236105 x= 3 2 5 seed=670350431 x= 4 3 5 seed=1956939964 x= 3 1 2 seed=353939815 x= 4 2 1 seed=1996660805 x= 3 4 5 seed=1835940555 x= 5 1 4 seed=910897519 x= 5 1 2
%macro test; %let x1=ant; %let x2=-.1234; %let x3=1e10; %let x4=hippopotamus; %let x5=zebra; %let k=3; %let seed = 12345; %do j=1 %to 10; %syscall ranperk(seed, k, x1, x2, x3, x4, x5); %put j=&j &x1 &x2 &x3; %end; %mend; %test;
j=1 -0.1234 hippopotamus zebra j=2 hippopotamus -0.1234 10000000000 j=3 hippopotamus ant zebra j=4 -0.1234 zebra ant j=5 -0.1234 ant hippopotamus j=6 10000000000 hippopotamus ant j=7 10000000000 hippopotamus ant j=8 ant 10000000000 -0.1234 j=9 zebra -0.1234 10000000000 j=10 zebra hippopotamus 10000000000