Class RejectionInversionZipfSampler

java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.RejectionInversionZipfSampler
All Implemented Interfaces:
DiscreteSampler, SharedStateDiscreteSampler, SharedStateSampler<SharedStateDiscreteSampler>

public class RejectionInversionZipfSampler extends SamplerBase implements SharedStateDiscreteSampler
Implementation of the Zipf distribution.

Sampling uses UniformRandomProvider.nextDouble().

Since:
1.0
  • Field Details

  • Constructor Details

    • RejectionInversionZipfSampler

      public RejectionInversionZipfSampler(UniformRandomProvider rng, int numberOfElements, double exponent)
      This instance delegates sampling. Use the factory method of(UniformRandomProvider, int, double) to create an optimal sampler.
      Parameters:
      rng - Generator of uniformly distributed random numbers.
      numberOfElements - Number of elements.
      exponent - Exponent.
      Throws:
      IllegalArgumentException - if numberOfElements <= 0 or exponent < 0.
  • Method Details

    • sample

      public int sample()
      Rejection inversion sampling method for a discrete, bounded Zipf distribution that is based on the method described in
      Wolfgang Hörmann and Gerhard Derflinger. "Rejection-inversion to generate variates from monotone discrete distributions",
      ACM Transactions on Modeling and Computer Simulation (TOMACS) 6.3 (1996): 169-184.
      Specified by:
      sample in interface DiscreteSampler
      Returns:
      a sample.
    • toString

      public String toString()
      Overrides:
      toString in class SamplerBase
    • withUniformRandomProvider

      public SharedStateDiscreteSampler 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<SharedStateDiscreteSampler>
      Parameters:
      rng - Generator of uniformly distributed random numbers.
      Returns:
      the sampler
      Since:
      1.3
    • of

      public static SharedStateDiscreteSampler of(UniformRandomProvider rng, int numberOfElements, double exponent)
      Creates a new Zipf distribution sampler.

      Note when exponent = 0 the Zipf distribution reduces to a discrete uniform distribution over the interval [1, n] with n the number of elements.

      Parameters:
      rng - Generator of uniformly distributed random numbers.
      numberOfElements - Number of elements.
      exponent - Exponent.
      Returns:
      the sampler
      Throws:
      IllegalArgumentException - if numberOfElements <= 0 or exponent < 0.
      Since:
      1.3