List of usage examples for org.apache.commons.math3.distribution ParetoDistribution sample
public double[] sample(int sampleSize)
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; }