Class RejectionInversionZipfSampler.RejectionInversionZipfSamplerImpl

    • Field Detail

      • TAYLOR_THRESHOLD

        private static final double TAYLOR_THRESHOLD
        Threshold below which Taylor series will be used.
        See Also:
        Constant Field Values
      • numberOfElements

        private final int numberOfElements
        Number of elements.
      • exponent

        private final double exponent
        Exponent parameter of the distribution.
      • hIntegralX1

        private final double hIntegralX1
        hIntegral(1.5) - 1.
      • hIntegralNumberOfElements

        private final double hIntegralNumberOfElements
        hIntegral(numberOfElements + 0.5).
      • r

        private final double r
        hIntegralX1 - hIntegralNumberOfElements.
      • s

        private final double s
        2 - hIntegralInverse(hIntegral(2.5) - h(2).
    • Constructor Detail

      • RejectionInversionZipfSamplerImpl

        RejectionInversionZipfSamplerImpl​(UniformRandomProvider rng,
                                          int numberOfElements,
                                          double exponent)
        Parameters:
        rng - Generator of uniformly distributed random numbers.
        numberOfElements - Number of elements (must be > 0).
        exponent - Exponent (must be > 0).
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hIntegral

        private double hIntegral​(double x)
        H(x) is defined as
        • (x^(1 - exponent) - 1) / (1 - exponent), if exponent != 1
        • log(x), if exponent == 1
        H(x) is an integral function of h(x), the derivative of H(x) is h(x).
        Parameters:
        x - Free parameter.
        Returns:
        H(x).
      • h

        private double h​(double x)
        h(x) = 1 / x^exponent.
        Parameters:
        x - Free parameter.
        Returns:
        h(x).
      • hIntegralInverse

        private double hIntegralInverse​(double x)
        The inverse function of H(x).
        Parameters:
        x - Free parameter
        Returns:
        y for which H(y) = x.
      • helper1

        private static double helper1​(double x)
        Helper function that calculates log(1 + x) / x.

        A Taylor series expansion is used, if x is close to 0.

        Parameters:
        x - A value larger than or equal to -1.
        Returns:
        log(1 + x) / x.
      • helper2

        private static double helper2​(double x)
        Helper function to calculate (exp(x) - 1) / x.

        A Taylor series expansion is used, if x is close to 0.

        Parameters:
        x - Free parameter.
        Returns:
        (exp(x) - 1) / x if x is non-zero, or 1 if x = 0.