package umontreal.iro.lecuyer.randvar;
import umontreal.iro.lecuyer.rng.*;
import umontreal.iro.lecuyer.probdist.*;


/**
 * This class implements random variate generators for the 
 * log-logistic distribution with shape parameter 
 * α > 0
 * and scale parameter β > 0.
 * The density function of this distribution is
 * 
 * 

*
* f (x) = (α(x/β)α-1)/(β[1 + (x/β)α]2)                for x > 0. *

* */ public class LoglogisticGen extends RandomVariateGen { protected double alpha; protected double beta; /** * Creates a log-logistic random variate generator with parameters * α = alpha and β = beta, using stream s. * */ public LoglogisticGen (RandomStream s, double alpha, double beta) { super (s, new LoglogisticDist(alpha, beta)); setParams (alpha, beta); } /** * Creates a new generator for the distribution dist, * using stream s. * */ public LoglogisticGen (RandomStream s, LoglogisticDist dist) { super (s, dist); if (dist != null) setParams (dist.getAlpha(), dist.getBeta()); } /** * Generates a variate from the log-logistic distribution * with shape parameter * α > 0 and scale parameter β > 0. * */ public static double nextDouble (RandomStream s, double alpha, double beta) { return LoglogisticDist.inverseF (alpha, beta, s.nextDouble()); } /** * Returns the parameter α of this object. * */ public double getAlpha() { return alpha; } /** * Returns the parameter β of this object. * */ public double getBeta() { return beta; } protected void setParams (double alpha, double beta) { if (alpha <= 0.0) throw new IllegalArgumentException ("alpha <= 0"); if (beta <= 0.0) throw new IllegalArgumentException ("beta <= 0"); this.alpha = alpha; this.beta = beta; } }

Ads help maintain this website.