Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Java

Idiom #158 Random sublist

Create a new list y from randomly picking exactly k elements from list x.

It is assumed that x has at least k elements.
Each element must have same probability to be picked.
Each element from x must be picked at most once.
Explain if the original ordering is preserved or not.

import static java.util.Collections.shuffle;
import java.util.ArrayList;
import java.util.List;
List<T> y = new ArrayList<>(x);
shuffle(y);
y = y.subList(0, k);
(def y (->> x shuffle (take k)))

New implementation...
< >
programming-idioms.org