List of usage examples for org.apache.commons.math3.distribution BinomialDistribution BinomialDistribution
public BinomialDistribution(int trials, double p)
From source file:jasima.core.random.discrete.IntBinomial.java
public IntBinomial(int n, double p) { super(); setDistribution(new BinomialDistribution(n, p)); }
From source file:com.facebook.presto.operator.aggregation.TestBootstrappedAggregation.java
@Test public void testErrorBound() throws Exception { int trials = 20; BinomialDistribution binomial = new BinomialDistribution(trials, 0.5); int successes = 0; Random rand = new Random(0); for (int i = 0; i < trials; i++) { int sum = 1_000; PageBuilder builder = new PageBuilder(ImmutableList.of(BIGINT, BIGINT)); for (int j = 0; j < sum; j++) { if (rand.nextDouble() < 0.5) { builder.getBlockBuilder(0).appendLong(1); builder.getBlockBuilder(1).appendLong(2); }//from w w w. j av a2 s . co m } AggregationFunction function = new DeterministicBootstrappedAggregation( createTestingBlockEncodingManager(), LONG_SUM); successes += approximateAggregationWithinErrorBound(function, 1, 0.5, (double) sum, builder.build()) ? 1 : 0; } // Since we used a confidence of 0.5, successes should have a binomial distribution B(n=20, p=0.5) assertTrue(binomial.inverseCumulativeProbability(0.01) < successes && successes < binomial.inverseCumulativeProbability(0.99)); }
From source file:com.facebook.presto.execution.resourceGroups.TestStochasticPriorityQueue.java
@Test public void testPollDistribution() { StochasticPriorityQueue<String> queue = new StochasticPriorityQueue<>(); for (int i = 0; i < 100; i++) { assertTrue(queue.addOrUpdate("foo" + i, 1)); }// w ww . j a v a 2 s. c o m for (int i = 0; i < 100; i++) { assertTrue(queue.addOrUpdate("bar" + i, 1)); } int foo = 0; for (int i = 0; i < 1000; i++) { String value = queue.poll(); if (value.startsWith("foo")) { foo++; } assertTrue(queue.addOrUpdate(value, 1)); } BinomialDistribution binomial = new BinomialDistribution(1000, 0.5); int lowerBound = binomial.inverseCumulativeProbability(0.000001); int upperBound = binomial.inverseCumulativeProbability(0.999999); assertLessThan(foo, upperBound); assertGreaterThan(foo, lowerBound); // Update foo weights to 2:1 distribution for (int i = 0; i < 100; i++) { assertFalse(queue.addOrUpdate("foo" + i, 2)); } foo = 0; for (int i = 0; i < 1000; i++) { String value = queue.poll(); if (value.startsWith("foo")) { foo++; assertTrue(queue.addOrUpdate(value, 2)); } else { assertTrue(queue.addOrUpdate(value, 1)); } } binomial = new BinomialDistribution(1000, 2.0 / 3.0); lowerBound = binomial.inverseCumulativeProbability(0.000001); upperBound = binomial.inverseCumulativeProbability(0.999999); assertLessThan(foo, upperBound); assertGreaterThan(foo, lowerBound); }
From source file:gr.eap.LSHDB.HammingKey.java
public int getLc() { double p = 1 - (t * 1.0) / (this.size * 1.0); p = Math.pow(p, k);/*from ww w. j a v a 2s.c o m*/ double exp = (L * p); double std = Math.sqrt(exp * (1 - p)); int C = (int) Math.round(exp - std); double x = (Math.sqrt(Math.log(delta) * Math.log(delta) - 2 * C * Math.log(delta)) - Math.log(delta) + C) / p; int Lc = (int) Math.ceil(x); double b = Lc * p; if (C > b) System.out.println("does not apply C > np."); BinomialDistribution bd1 = new BinomialDistribution(L, p); for (int l = L; l < L * 2; l++) { bd1 = new BinomialDistribution(l, p); double result = bd1.cumulativeProbability(C - 1); if (result < delta) { Lc = l; break; } } System.out.println("Lc reduced to=" + Lc); return Lc; }
From source file:com.antigenomics.mist.umi.UmiErrorAndDiversityModel.java
public double errorProbability(UmiCoverageAndQuality parent, UmiCoverageAndQuality child) { double logProb = 0.0; NucleotideSequence parentUmi = parent.getUmiTag().getSequence(), childUmi = child.getUmiTag().getSequence(); SequenceQuality childUmiQual = child.getQuality(); for (int i = 0; i < parentUmi.size(); i++) { byte code = parentUmi.codeAt(i); if (code != childUmi.codeAt(i)) { logProb += childUmiQual.log10ProbabilityOfErrorAt(i); }/*w ww. j a va 2 s . c o m*/ } return new BinomialDistribution(parent.getCoverage() + child.getCoverage(), Math.pow(10, logProb)) .cumulativeProbability(child.getCoverage()); }
From source file:com.facebook.presto.execution.resourceGroups.TestWeightedFairQueue.java
@Test public void testMultipleWinners() { WeightedFairQueue<String> queue = new WeightedFairQueue<>(); String item1 = "1"; String item2 = "2"; queue.addOrUpdate(item1, new Usage(2, 0)); queue.addOrUpdate(item2, new Usage(1, 0)); int count1 = 0; int count2 = 0; for (int i = 0; i < 1000; i++) { if (queue.poll().equals(item1)) { queue.addOrUpdate(item1, new Usage(2, 0)); count1++;// ww w. j av a 2s .c o m } else { queue.addOrUpdate(item2, new Usage(1, 0)); count2++; } } BinomialDistribution binomial = new BinomialDistribution(1000, 2.0 / 3.0); int lowerBound = binomial.inverseCumulativeProbability(0.000001); int upperBound = binomial.inverseCumulativeProbability(0.999999); assertBetweenInclusive(count1, lowerBound, upperBound); assertBetweenInclusive((1000 - count2), lowerBound, upperBound); }
From source file:edu.oregonstate.eecs.mcplan.domains.inventory.InventorySimulator.java
public static void applyDynamics(final InventoryState s) { s.r = 0;// w w w.j a va 2 s . c o m for (int i = 0; i < s.problem.Nproducts; ++i) { // Pending orders arrive final BinomialDistribution f = new BinomialDistribution(s.orders[i], s.problem.delivery_probability); final int arrivals = f.sample(); // System.out.println( "\tarrivals[" + i + "] = " + arrivals ); s.orders[i] -= arrivals; s.inventory[i] += arrivals; // Demand is satisfied final int supplied = Math.min(s.demand[i], s.inventory[i]); s.inventory[i] -= supplied; s.r += s.problem.price[i] * supplied; // Excess inventory is wasted s.inventory[i] = Math.min(s.inventory[i], s.problem.max_inventory); // Warehouse cost s.r -= s.inventory[i] * s.problem.warehouse_cost; // Demand changes // s.demand[i] = s.rng.nextInt( s.problem.max_demand + 1 ); } // Demand changes final int[] new_demand = s.problem.sampleNextDemand(s); Fn.memcpy(s.demand, new_demand); }
From source file:jasima.core.random.discrete.IntBinomial.java
/** * Sets the probability of success in a single trial. * /*from w ww . j a v a 2 s . c o m*/ * @param probOfSuccess * The success probability. * @throws OutOfRangeException * If the supplied probability is not in the interval * {@code [0,1]}. */ public void setProbabilityOfSuccess(double probOfSuccess) throws OutOfRangeException { setDistribution(new BinomialDistribution(dist.getNumberOfTrials(), probOfSuccess)); }
From source file:jasima.core.random.discrete.IntBinomial.java
/** * Sets the number of trails of the Bernoulli experiment. * /* w ww . java2s . c o m*/ * @param numTrials * The number of trials. * @throws NotPositiveException * If the supplied value was negative. */ public void setNumTrials(int numTrials) throws NotPositiveException { setDistribution(new BinomialDistribution(numTrials, dist.getProbabilityOfSuccess())); }
From source file:me.datamining.cluster.STING.java
/** * //from w w w. ja v a 2 s .c o m * @param value * @param number * @param probabilty * @return */ public static double binomialPDF(int value, double number, double probabilty) { BinomialDistribution bdf = new BinomialDistribution((int) value, probabilty); return bdf.probability(value); }