public double sample()

in commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ChengBetaSampler.java [173:201]


        public double sample() {
            double r;
            double w;
            double t;
            do {
                // Step 1:
                final double u1 = rng.nextDouble();
                final double u2 = rng.nextDouble();
                final double v = beta * (Math.log(u1) - Math.log1p(-u1));
                w = a * Math.exp(v);
                final double z = u1 * u1 * u2;
                r = gamma * v - LN_4;
                final double s = a + r - w;
                // Step 2:
                if (s + LN_5_P1 >= 5 * z) {
                    break;
                }

                // Step 3:
                t = Math.log(z);
                if (s >= t) {
                    break;
                }
                // Step 4:
            } while (r + alpha * (logAlpha - Math.log(b + w)) < t);

            // Step 5:
            return computeX(w);
        }