List of usage examples for org.apache.commons.math3.distribution ParetoDistribution ParetoDistribution
public ParetoDistribution(double scale, double shape) throws NotStrictlyPositiveException
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)); } }