       Re: Random Sampling Without Replacement?

• To: mathgroup at smc.vnet.net
• Subject: [mg26604] Re: [mg26586] Random Sampling Without Replacement?
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Thu, 11 Jan 2001 10:39:14 -0500 (EST)
• References: <200101090652.BAA00242@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```"A. E. Siegman" wrote:
>
> Looking for neat compact way to extract three distinct (i.e., nonequal)
> randomly selected integers k1, k2, k3 from the range 1 to N (N > 3) --
> in other words, random sampling without replacement -- ???

A general efficient way to sample without replacement may be implemented
as a shuffling algorithm that iteratively swaps first element with a
random element between start and end, then swaps second with a random
element between second and end, and so on. In essence we shuffle as we
deal (don't try this in Las Vegas).

SetAttributes[deal, HoldFirst]
deal[deck_, start_, end_] := Module[
{len=Length[deck], rand},
Do [
rand = Random[Integer,{j,len}];
deck[[{j,rand}]] = deck[[{rand,j}]],
{j,start,end}];
Take[deck, {start,end}]
]

deck = Range;

Let's pick four.

In:= deal[deck, 1, 4]
Out= {44, 18, 7, 9}

Now we can pick some more, say seven.

In:= deal[deck, 5, 11]
Out= {36, 34, 11, 45, 8, 2, 46}

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: Expansion Coefficients in Multivariable Series Expansions?
• Next by Date: RE: Expansion Coefficients in Multivariate Series Expansions?
• Previous by thread: Re: Random Sampling Without Replacement?
• Next by thread: Re: Random Sampling Without Replacement?