Example usage for org.apache.commons.math3.distribution ParetoDistribution ParetoDistribution

List of usage examples for org.apache.commons.math3.distribution ParetoDistribution ParetoDistribution

Introduction

In this page you can find the example usage for org.apache.commons.math3.distribution ParetoDistribution ParetoDistribution.

Prototype

public ParetoDistribution(double scale, double shape) throws NotStrictlyPositiveException 

Source Link

Document

Create a Pareto distribution using the specified scale and shape.

Usage

From source file:org.jboss.aerogear.unifiedpush.utils.installation.generation.ParetoInstallationDistribution.java

@Override
public MassInstallation generate(List<PushApplication> registeredApplications, int installationsCount) {

    ParetoDistribution paretoDistribution = new ParetoDistribution(PARETO_SCALE_PARAMETER,
            PARETO_SHAPE_PARAMETER);/*from w w  w.j a v a  2s. co  m*/

    List<Variant> variants = new ArrayList<Variant>();

    for (PushApplication pushApplication : registeredApplications) {
        variants.addAll(pushApplication.getVariants());
    }

    double[] distributionSample = paretoDistribution.sample(variants.size());

    double installationSum = sum(distributionSample);

    double[] installationsPerVariantFraction = new double[distributionSample.length];

    for (int i = 0; i < installationsPerVariantFraction.length; i++) {
        installationsPerVariantFraction[i] = distributionSample[i] / installationSum;
    }

    double[] installationsPerVariant = new double[distributionSample.length];

    for (int i = 0; i < installationsPerVariant.length; i++) {
        installationsPerVariant[i] = installationsPerVariantFraction[i] * installationsCount;
    }

    int[] installations = roundInstallationsCount(installationsPerVariant);

    MassInstallation massInstallation = new MassInstallation();

    for (int i = 0; i < variants.size(); i++) {
        Variant variant = variants.get(i);
        massInstallation.map.put(variant.getVariantID(),
                InstallationUtils.generate(variant.getType(), installations[i]));
    }

    return massInstallation;
}

From source file:org.lightjason.trafficsimulation.math.EDistributionFactory.java

/**
 * generate the distribution//from w  w w.  j  av a2 s  . co m
 *
 * @param p_args distribution arguments
 * @return the distribution
 */
public final AbstractRealDistribution generate(final double... p_args) {
    switch (this) {
    case BETA:
        return new BetaDistribution(p_args[0], p_args[1]);
    case CAUCHY:
        return new CauchyDistribution(p_args[0], p_args[1]);
    case CHI_SQUARED:
        return new ChiSquaredDistribution(p_args[0]);
    case EXPONENTIAL:
        return new ExponentialDistribution(p_args[0]);
    case F:
        return new FDistribution(p_args[0], p_args[1]);
    case GAMMA:
        return new GammaDistribution(p_args[0], p_args[1]);
    case GUMBEL:
        return new GumbelDistribution(p_args[0], p_args[1]);
    case LAPLACE:
        return new LaplaceDistribution(p_args[0], p_args[1]);
    case LEVY:
        return new LevyDistribution(p_args[0], p_args[1]);
    case LOGISTIC:
        return new LogisticDistribution(p_args[0], p_args[1]);
    case LOG_NORMAL:
        return new LogNormalDistribution(p_args[0], p_args[1]);
    case NAKAGAMI:
        return new NakagamiDistribution(p_args[0], p_args[1]);
    case NORMAL:
        return new NormalDistribution(p_args[0], p_args[1]);
    case PARETO:
        return new ParetoDistribution(p_args[0], p_args[1]);
    case T:
        return new TDistribution(p_args[0]);
    case TRIANGULAR:
        return new TriangularDistribution(p_args[0], p_args[1], p_args[2]);
    case UNIFORM:
        return new UniformRealDistribution(p_args[0], p_args[1]);
    case WEIBULL:
        return new WeibullDistribution(p_args[0], p_args[1]);

    default:
        throw new RuntimeException(MessageFormat.format("not set {0}", this));
    }
}