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

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

Introduction

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

Prototype

public BinomialDistribution(int trials, double p) 

Source Link

Document

Create a binomial distribution with the given number of trials and probability of success.

Usage

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);
}