java.lang.Object
org.apache.commons.rng.sampling.distribution.TSampler
All Implemented Interfaces:
ContinuousSampler, SharedStateContinuousSampler, SharedStateSampler<SharedStateContinuousSampler>
Direct Known Subclasses:
TSampler.NormalTSampler, TSampler.StudentsTSampler

public abstract class TSampler extends Object implements SharedStateContinuousSampler
Sampling from a T distribution.

Uses Bailey's algorithm for t-distribution sampling:

 Bailey, R. W. (1994)
 "Polar Generation of Random Variates with the t-Distribution."
 Mathematics of Computation 62, 779-781.
 

Sampling uses UniformRandomProvider.nextLong().

Since:
1.5
See Also:
  • Field Details

    • HUGE_DF

      private static final double HUGE_DF
      Threshold for huge degrees of freedom. Above this value the CDF of the t distribution matches the normal distribution. Value is 2/eps (where eps is the machine epsilon) or approximately 9.0e15.
      See Also:
    • rng

      private final UniformRandomProvider rng
      Source of randomness.
  • Constructor Details

    • TSampler

      TSampler(UniformRandomProvider rng)
      Parameters:
      rng - Generator of uniformly distributed random numbers.
  • Method Details

    • withUniformRandomProvider

      public abstract TSampler withUniformRandomProvider(UniformRandomProvider rng)
      Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.
      Specified by:
      withUniformRandomProvider in interface SharedStateSampler<SharedStateContinuousSampler>
      Parameters:
      rng - Generator of uniformly distributed random numbers.
      Returns:
      the sampler
    • nextLong

      long nextLong()
      Generates a long value. Used by algorithm implementations without exposing access to the RNG.
      Returns:
      the next random value
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • of

      public static TSampler of(UniformRandomProvider rng, double degreesOfFreedom)
      Create a new t distribution sampler.
      Parameters:
      rng - Generator of uniformly distributed random numbers.
      degreesOfFreedom - Degrees of freedom.
      Returns:
      the sampler
      Throws:
      IllegalArgumentException - if degreesOfFreedom <= 0