## Random draws without replacement

Solved
Occasional Contributor
Posts: 16

# Random draws without replacement

I need to randomly choose k integers between 1 and T without replacement.

Here's what I've come up with:

T=60;

k=15;

/* random vector for choosing integers */

r = j(T,1,0);

call randgen(r,'uniform');

/* find indices from sorting r */

call sortndx( integers, r, {1});

/* take first k integers */

draw = integers[1:k];

I need to do it many times, and I'd rather avoid looping through this, so I'm wondering if anyone has a better solution.

Accepted Solutions
Solution
‎08-14-2013 03:11 PM
SAS Super FREQ
Posts: 4,171

## Re: Random draws without replacement

There are many ways. Do you have SAS/IML 12.1 (SAS 9.3m2)? If so, use

s = sample(1:60, {15 100}, "WOR");

The sample space is 1:60.  The sample size is 15.  The number of independent draws is 100. The samplnig is done without replacement.

All Replies
Solution
‎08-14-2013 03:11 PM
SAS Super FREQ
Posts: 4,171

## Re: Random draws without replacement

There are many ways. Do you have SAS/IML 12.1 (SAS 9.3m2)? If so, use

s = sample(1:60, {15 100}, "WOR");

The sample space is 1:60.  The sample size is 15.  The number of independent draws is 100. The samplnig is done without replacement.

Occasional Contributor
Posts: 16

## Re: Random draws without replacement

Perfect, thanks Rick. I made sure to update to 9.4 (12.3) after your recent blog post.

🔒 This topic is solved and locked.

Discussion stats
• 2 replies
• 332 views
• 1 like
• 2 in conversation