Class RandomSamplingAssistant

java.lang.Object
cern.colt.PersistentObject
cern.jet.random.sampling.RandomSamplingAssistant
All Implemented Interfaces:
Serializable, Cloneable

public class RandomSamplingAssistant extends PersistentObject
Conveniently computes a stable Simple Random Sample Without Replacement (SRSWOR) subsequence of n elements from a given input sequence of N elements; Example: Computing a sublist of n=3 random elements from a list (1,...,50) may yield the sublist (7,13,47). The subsequence is guaranteed to be stable, i.e. elements never change position relative to each other. Each element from the N elements has the same probability to be included in the n chosen elements. This class is a convenience adapter for RandomSampler using blocks.
Version:
1.0, 02/05/99
Author:
wolfgang.hoschek@cern.ch
See Also:
  • Field Details

    • sampler

      protected RandomSampler sampler
    • buffer

      protected long[] buffer
    • bufferPosition

      protected int bufferPosition
    • skip

      protected long skip
    • n

      protected long n
  • Constructor Details

    • RandomSamplingAssistant

      public RandomSamplingAssistant(long n, long N, RandomEngine randomGenerator)
      Constructs a random sampler that samples n random elements from an input sequence of N elements.
      Parameters:
      n - the total number of elements to choose (must be >= 0).
      N - number of elements to choose from (must be >= n).
      randomGenerator - a random number generator. Set this parameter to null to use the default random number generator.
  • Method Details

    • clone

      public Object clone()
      Returns a deep copy of the receiver.
      Overrides:
      clone in class PersistentObject
      Returns:
      a copy of the receiver.
    • fetchNextBlock

      protected void fetchNextBlock()
      Not yet commented.
    • getRandomGenerator

      public RandomEngine getRandomGenerator()
      Returns the used random generator.
    • main

      public static void main(String[] args)
      Tests random sampling.
    • sampleArray

      public static int[] sampleArray(int n, int[] elements)
      Just shows how this class can be used; samples n elements from and int[] array.
    • sampleNextElement

      public boolean sampleNextElement()
      Returns whether the next element of the input sequence shall be sampled (picked) or not.
      Returns:
      true if the next element shall be sampled (picked), false otherwise.
    • test

      public static void test(long n, long N)
      Tests the methods of this class. To do benchmarking, comment the lines printing stuff to the console.
    • testArraySampling

      public static void testArraySampling(int n, int N)
      Tests the methods of this class. To do benchmarking, comment the lines printing stuff to the console.