CALL RANPERK Routine
Permutes the values of the arguments, and returns a random permutation of k out of n values.
| Category: | Combinatorial |
| Restriction: | This function is not valid on the CAS server. |
| Note: | Argument types for arguments that are updated must match in CALL routines. All argument types must be CHAR, VARCHAR, or NUMERIC. If the argument types do not match, a warning is issued to the log. |
Syntax
Required Arguments
seed
is a numeric variable that contains the random number seed. For more information about seeds, see Seed Values.
k
is the number of values that you want to have in the random permutation.
variable
specifies all numeric variables, or all character variables that have the same length. K values of these variables are randomly permuted.
Details
Using CALL RANPERK with Macros
-
&SYSERR is assigned a value that is greater than 4.
-
&SYSINFO is assigned a value that is less than -100.
Examples
Example 1: Using CALL RANPERK in a DATA Step
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
Example 2: Using CALL RANPERK with a Macro
%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