Example usage for org.apache.commons.math.distribution ExponentialDistributionImpl ExponentialDistributionImpl

List of usage examples for org.apache.commons.math.distribution ExponentialDistributionImpl ExponentialDistributionImpl

Introduction

In this page you can find the example usage for org.apache.commons.math.distribution ExponentialDistributionImpl ExponentialDistributionImpl.

Prototype

public ExponentialDistributionImpl(double mean) 

Source Link

Document

Create a exponential distribution with the given mean.

Usage

From source file:asr.failure.PhiMeasure.java

/**
 * Compute phi assuming the samples have an exponential distribution.
 * /*from  w w w. j av  a 2  s  .com*/
 * @param samples
 * @param test
 * @return phi
 */
public static double compute(DescriptiveStatistics samples, double test) {
    try {
        double probability = 1 - new ExponentialDistributionImpl(samples.getMean()).cumulativeProbability(test);

        return -1 * Math.log10(probability);
    } catch (MathException e) {
        throw new IllegalArgumentException(e);
    }
}

From source file:de.tud.kom.p2psim.impl.util.stat.distributions.ExponentialDistribution.java

/**
 * returns a random value exponentially distributed with mu = _mu.
 * //from www .  j a va  2  s  .  c om
 * @param _mu
 * @return as double
 */
public static double returnValue(double _mu) {
    try {
        ExponentialDistributionImpl d = new ExponentialDistributionImpl(_mu);
        return d.inverseCumulativeProbability(Simulator.getRandom().nextDouble());
    } catch (MathException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return 0;
    }
}

From source file:de.tud.kom.p2psim.impl.util.stat.distributions.ExponentialDistribution.java

@XMLConfigurableConstructor({ "mu" })
public ExponentialDistribution(double mu) {
    this.mu = mu;
    this.distr = new ExponentialDistributionImpl(mu);
}

From source file:evaluation.simulator.plugins.outputStrategy.StopAndGoMessage.java

public StopAndGoMessage(boolean isRequest, NetworkNode source, NetworkNode destination, AbstractClient owner,
        long creationTime, boolean isDummy) {

    super(isRequest, source, destination, owner, creationTime, isDummy);

    this.identifier = idCounter++;

    // generate delays
    securityParameterMu = Simulator.settings.getPropertyAsDouble("SGMIX_SECURITY_PARAMETER_MU");
    Simulator simulator = Simulator.getSimulator();
    int numberOfMixes = simulator.getMixes().size();
    this.delay = new int[numberOfMixes];
    this.expDist = new ExponentialDistributionImpl(1d / securityParameterMu);
    this.expDist.reseedRandomGenerator(secureRandom.nextLong());
    boolean useTimeStamps = Simulator.settings.getPropertyAsBoolean("SGMIX_USE_TIMESTAMPS");

    for (int i = 0; i < numberOfMixes; i++) {

        try {//from  www . j  av  a  2  s .  c o m
            delay[i] = (int) Math.round(expDist.sample() * 1000d);
        } catch (MathException e) {
            e.printStackTrace();
            throw new RuntimeException("ERROR: could not draw sample from exponential distribution!");
        }

    }

    if (useTimeStamps) {

        minInterMixDelay = Simulator.settings.getPropertyAsInt("SGMIX_MIN_INTER_MIX_DELAY");
        maxInterMixDelay = Simulator.settings.getPropertyAsInt("SGMIX_MAX_INTER_MIX_DELAY");
        minClientMixDelay = Simulator.settings.getPropertyAsInt("SGMIX_MIN_CLIENT_MIX_DELAY");
        maxClientMixDelay = Simulator.settings.getPropertyAsInt("SGMIX_MAX_CLIENT_MIX_DELAY");
        maxClockDeviation = Simulator.settings.getPropertyAsInt("SGMIX_MAX_CLOCK_DEVITION");

        tsMin = new long[numberOfMixes];
        tsMax = new long[numberOfMixes];

        for (int i = 0; i < numberOfMixes; i++) {
            if (isRequest) {
                tsMin[i] = getMinTimestampForRequest(i, maxClockDeviation, delay, minInterMixDelay,
                        minClientMixDelay);
                tsMax[i] = getMaxTimestampForRequest(i, maxClockDeviation, delay, maxInterMixDelay,
                        maxClientMixDelay);
            } else {
                tsMin[i] = getMinTimestampForReply(i, maxClockDeviation, delay, minInterMixDelay,
                        minClientMixDelay);
                tsMax[i] = getMaxTimestampForReply(i, maxClockDeviation, delay, maxInterMixDelay,
                        maxClientMixDelay);
            }

        }

    }

}

From source file:edu.utexas.cs.tactex.servercustomers.factoredcustomer.ProbabilityDistribution.java

ProbabilityDistribution(FactoredCustomerService service, Element xml) {
    if (null == randomSeedRepo)
        randomSeedRepo = (RandomSeedRepo) SpringApplicationContext.getBean("randomSeedRepo");

    type = Enum.valueOf(DistType.class, xml.getAttribute("distribution"));
    switch (type) {
    case POINTMASS:
    case DEGENERATE:
        param1 = Double.parseDouble(xml.getAttribute("value"));
        sampler = new DegenerateSampler(param1);
        break;/*from w ww  .ja  v  a 2 s. c  o m*/
    case UNIFORM:
        param1 = Double.parseDouble(xml.getAttribute("low"));
        param2 = Double.parseDouble(xml.getAttribute("high"));
        sampler = new UniformSampler(param1, param2);
        break;
    case INTERVAL:
        param1 = Double.parseDouble(xml.getAttribute("mean"));
        param2 = Double.parseDouble(xml.getAttribute("stdDev"));
        param3 = Double.parseDouble(xml.getAttribute("low"));
        param4 = Double.parseDouble(xml.getAttribute("high"));
        sampler = new IntervalSampler(param1, param2, param3, param4);
        break;
    case NORMAL:
    case GAUSSIAN:
        param1 = Double.parseDouble(xml.getAttribute("mean"));
        param2 = Double.parseDouble(xml.getAttribute("stdDev"));
        sampler = new ContinuousSampler(new NormalDistributionImpl(param1, param2));
        break;
    case STDNORMAL:
        param1 = 0;
        param2 = 1;
        sampler = new ContinuousSampler(new NormalDistributionImpl(param1, param2));
        break;
    case LOGNORMAL:
        param1 = Double.parseDouble(xml.getAttribute("expMean"));
        param2 = Double.parseDouble(xml.getAttribute("expStdDev"));
        sampler = new LogNormalSampler(param1, param2);
        break;
    case CAUCHY:
        param1 = Double.parseDouble(xml.getAttribute("median"));
        param2 = Double.parseDouble(xml.getAttribute("scale"));
        sampler = new ContinuousSampler(new CauchyDistributionImpl(param1, param2));
        break;
    case BETA:
        param1 = Double.parseDouble(xml.getAttribute("alpha"));
        param2 = Double.parseDouble(xml.getAttribute("beta"));
        sampler = new ContinuousSampler(new BetaDistributionImpl(param1, param2));
        break;
    case BINOMIAL:
        param1 = Double.parseDouble(xml.getAttribute("trials"));
        param2 = Double.parseDouble(xml.getAttribute("success"));
        sampler = new DiscreteSampler(new BinomialDistributionImpl((int) param1, param2));
        break;
    case POISSON:
        param1 = Double.parseDouble(xml.getAttribute("lambda"));
        sampler = new DiscreteSampler(new PoissonDistributionImpl(param1));
        break;
    case CHISQUARED:
        param1 = Double.parseDouble(xml.getAttribute("dof"));
        sampler = new ContinuousSampler(new ChiSquaredDistributionImpl(param1));
        break;
    case EXPONENTIAL:
        param1 = Double.parseDouble(xml.getAttribute("mean"));
        sampler = new ContinuousSampler(new ExponentialDistributionImpl(param1));
        break;
    case GAMMA:
        param1 = Double.parseDouble(xml.getAttribute("alpha"));
        param2 = Double.parseDouble(xml.getAttribute("beta"));
        sampler = new ContinuousSampler(new GammaDistributionImpl(param1, param2));
        break;
    case WEIBULL:
        param1 = Double.parseDouble(xml.getAttribute("alpha"));
        param2 = Double.parseDouble(xml.getAttribute("beta"));
        sampler = new ContinuousSampler(new WeibullDistributionImpl(param1, param2));
        break;
    case STUDENT:
        param1 = Double.parseDouble(xml.getAttribute("dof"));
        sampler = new ContinuousSampler(new TDistributionImpl(param1));
        break;
    case SNEDECOR:
        param1 = Double.parseDouble(xml.getAttribute("d1"));
        param2 = Double.parseDouble(xml.getAttribute("d2"));
        sampler = new ContinuousSampler(new FDistributionImpl(param1, param2));
        break;
    default:
        throw new Error("Invalid probability distribution type!");
    }
    sampler.reseedRandomGenerator(service.getRandomSeedRepo()
            .getRandomSeed("factoredcustomer.ProbabilityDistribution", SeedIdGenerator.getId(), "Sampler")
            .getValue());
}

From source file:adams.gui.visualization.stats.paintlet.Exponential.java

/**
 * The paint routine of the paintlet./*from w w w. j a v  a 2s .c om*/
 *
 * @param g      the graphics context to use for painting
 * @param moment   what {@link PaintMoment} is currently being painted
 */
@Override
protected void doPerformPaint(Graphics g, PaintMoment moment) {
    if ((m_Data != null) && (m_Sorted != null)) {
        GUIHelper.configureAntiAliasing(g, m_AntiAliasingEnabled);

        for (int i = 0; i < m_Sorted.length; i++) {
            Graphics2D g2d = (Graphics2D) g;
            //If data points are to be filled
            if (m_Fill) {
                g2d.setColor(m_FillColor);
                g2d.setStroke(new BasicStroke(0));
                g2d.fillOval(m_AxisBottom.valueToPos(m_Sorted[i]) - m_Size / 2,
                        m_AxisLeft.valueToPos(m_TransformedY[i]) - m_Size / 2, m_Size, m_Size);
            }
            //outline of data point
            g2d.setStroke(new BasicStroke(m_StrokeThickness));
            g2d.setColor(m_Color);
            g2d.drawOval(m_AxisBottom.valueToPos(m_Sorted[i]) - m_Size / 2,
                    m_AxisLeft.valueToPos(m_TransformedY[i]) - m_Size / 2, m_Size, m_Size);
        }
        //if drawing regression fit diagonal
        if (m_RegressionLine) {
            g.setColor(Color.BLACK);
            double[] newData = new double[m_Sorted.length];
            for (int i = 0; i < m_Sorted.length; i++) {
                newData[i] = Math.log(m_Sorted[i]);
            }
            ExponentialDistributionImpl ex = new ExponentialDistributionImpl(StatUtils.mean(newData));
            //draw the expected diagonal line using the exponential distribution
            for (int i = 0; i < m_Sorted.length - 1; i++) {
                double prob1;
                try {
                    prob1 = ex.cumulativeProbability(newData[i]);
                } catch (MathException e) {
                    prob1 = 0;
                }
                double prob2;
                try {
                    prob2 = ex.cumulativeProbability(newData[i + 1]);
                } catch (MathException e) {
                    prob2 = 0;
                }
                double p1 = -Math.log(1 - prob1);
                double p2 = -Math.log(1 - prob2);
                g.drawLine(m_AxisBottom.valueToPos(m_Sorted[i]), m_AxisLeft.valueToPos(p1),
                        m_AxisBottom.valueToPos(m_Sorted[i + 1]), m_AxisLeft.valueToPos(p2));
            }
        }
    }
}

From source file:geogebra.kernel.statistics.AlgoDistribution.java

ExponentialDistribution getExponentialDistribution(double param) {
    if (exponential == null)
        exponential = new ExponentialDistributionImpl(1.0 / param);
    else {//from  w w  w.j ava 2s.com
        exponential.setMean(1.0 / param);
    }
    return exponential;
}

From source file:geogebra.common.kernel.statistics.AlgoDistribution.java

/**
 * @param param//from w w w .j  a  va2 s  .c o  m
 *            mean
 * @return exponential distribution
 */
protected ExponentialDistribution getExponentialDistribution(double param) {
    if (exponential == null || exponential.getMean() != param)
        exponential = new ExponentialDistributionImpl(1.0 / param);

    return exponential;
}

From source file:org.apache.gossip.accrual.FailureDetector.java

public synchronized Double computePhiMeasure(long now) {
    if (latestHeartbeatMs == -1 || descriptiveStatistics.getN() < minimumSamples) {
        return null;
    }//  w ww . j ava2 s.c om
    long delta = now - latestHeartbeatMs;
    try {
        double probability;
        if (distribution.equals("normal")) {
            double standardDeviation = descriptiveStatistics.getStandardDeviation();
            standardDeviation = standardDeviation < 0.1 ? 0.1 : standardDeviation;
            probability = new NormalDistributionImpl(descriptiveStatistics.getMean(), standardDeviation)
                    .cumulativeProbability(delta);
        } else {
            probability = new ExponentialDistributionImpl(descriptiveStatistics.getMean())
                    .cumulativeProbability(delta);
        }
        final double eps = 1e-12;
        if (1 - probability < eps) {
            probability = 1.0;
        }
        return -1.0d * Math.log10(1.0d - probability);
    } catch (MathException | IllegalArgumentException e) {
        LOGGER.debug(e);
        return null;
    }
}

From source file:org.broadinstitute.gatk.utils.MathUtils.java

public static ExponentialDistribution exponentialDistribution(final double mean) {
    return new ExponentialDistributionImpl(mean);
}