Class ListSampler


  • public class ListSampler
    extends java.lang.Object
    Sampling from a List.

    This class also contains utilities for shuffling a List in-place.

    Since:
    1.0
    • Method Summary

      Modifier and Type Method Description
      static <T> java.util.List<T> sample​(UniformRandomProvider rng, java.util.List<T> collection, int k)
      Generates a list of size k whose entries are selected randomly, without repetition, from the items in the given collection.
      static <T> void shuffle​(UniformRandomProvider rng, java.util.List<T> list)
      Shuffles the entries of the given array.
      static <T> void shuffle​(UniformRandomProvider rng, java.util.List<T> list, int start, boolean towardHead)
      Shuffles the entries of the given array, using the Fisher-Yates algorithm.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • sample

        public static <T> java.util.List<T> sample​(UniformRandomProvider rng,
                                                   java.util.List<T> collection,
                                                   int k)
        Generates a list of size k whose entries are selected randomly, without repetition, from the items in the given collection.

        Sampling is without replacement; but if the source collection contains identical objects, the sample may include repeats.

        Sampling uses UniformRandomProvider.nextInt(int).

        Type Parameters:
        T - Type of the list items.
        Parameters:
        rng - Generator of uniformly distributed random numbers.
        collection - List to be sampled from.
        k - Size of the returned sample.
        Returns:
        a shuffled sample from the source collection.
        Throws:
        java.lang.IllegalArgumentException - if k <= 0 or k > collection.size().
      • shuffle

        public static <T> void shuffle​(UniformRandomProvider rng,
                                       java.util.List<T> list)
        Shuffles the entries of the given array.
        Type Parameters:
        T - Type of the list items.
        Parameters:
        rng - Random number generator.
        list - List whose entries will be shuffled (in-place).
        See Also:
        shuffle(UniformRandomProvider,List,int,boolean)
      • shuffle

        public static <T> void shuffle​(UniformRandomProvider rng,
                                       java.util.List<T> list,
                                       int start,
                                       boolean towardHead)
        Shuffles the entries of the given array, using the Fisher-Yates algorithm. The start and pos parameters select which part of the array is randomized and which is left untouched.

        Sampling uses UniformRandomProvider.nextInt(int).

        Type Parameters:
        T - Type of the list items.
        Parameters:
        rng - Random number generator.
        list - List whose entries will be shuffled (in-place).
        start - Index at which shuffling begins.
        towardHead - Shuffling is performed for index positions between start and either the end (if false) or the beginning (if true) of the array.