  Consider the fundamental problem of drawing a simple random sample of size k
without replacement from [n] := {1, . . . , n}. Although a number of classical
algorithms exist for this problem, we construct algorithms that are even
simpler, easier to implement, and have optimal space and time complexity.
