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

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

Introduction

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

Prototype

public double[] sample(int sampleSize) 

Source Link

Document

The default implementation generates the sample by calling #sample() in a loop.

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);//w ww. j a  va2  s.c o  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;
}