Example usage for org.apache.commons.math3.random GaussianRandomGenerator nextNormalizedDouble

List of usage examples for org.apache.commons.math3.random GaussianRandomGenerator nextNormalizedDouble

Introduction

In this page you can find the example usage for org.apache.commons.math3.random GaussianRandomGenerator nextNormalizedDouble.

Prototype

public double nextNormalizedDouble() 

Source Link

Document

Generate a random scalar with null mean and unit standard deviation.

Usage

From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java

@Test
public void testNormallyDistributedRandomData() {
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < 1000000; ++i) {
        double d = gaussian.nextNormalizedDouble();
        values.add(d);//from   w w  w.  j  a  v  a  2 s  . c om
    }
    validateEquality(values);
}

From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java

@Test
public void testNormallyDistributedRandomDataShifted() {
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < 1000000; ++i) {
        double d = gaussian.nextNormalizedDouble() + 10;
        values.add(d);//w  w  w  .  java  2  s  .  c  om
    }
    validateEquality(values);
}

From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java

@Test
public void testNormallyDistributedRandomDataShiftedBackwards() {
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < 1000000; ++i) {
        double d = gaussian.nextNormalizedDouble() - 10;
        values.add(d);//from   w  ww  . j  av  a2  s .  co m
    }
    validateEquality(values);
}

From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java

@Test
public void testNormallyDistributedRandomDataSkewed() {
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < 1000000; ++i) {
        double d = (gaussian.nextNormalizedDouble() + 10000) / 1000;
        values.add(d);/*w ww.j a  va  2  s  . c o  m*/
    }
    validateEquality(values);
}

From source file:org.apache.metron.statistics.OnlineStatisticsProviderTest.java

@Test
public void testNormallyDistributedRandomDataAllNegative() {
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < 1000000; ++i) {
        double d = -1 * gaussian.nextNormalizedDouble();
        values.add(d);/*from  w ww . j  av  a  2 s  .co  m*/
    }
    validateEquality(values);
}

From source file:org.apache.metron.statistics.outlier.MedianAbsoluteDeviationTest.java

@Test
public void test() {

    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    DescriptiveStatistics stats = new DescriptiveStatistics();
    List<MedianAbsoluteDeviationFunctions.State> states = new ArrayList<>();
    MedianAbsoluteDeviationFunctions.State currentState = null;
    //initialize the state
    currentState = (MedianAbsoluteDeviationFunctions.State) run("OUTLIER_MAD_STATE_MERGE(states, NULL)",
            ImmutableMap.of("states", states));
    for (int i = 0, j = 0; i < 10000; ++i, ++j) {
        Double d = gaussian.nextNormalizedDouble();
        stats.addValue(d);//from w  w  w .j  a v  a2s  .  co m
        run("OUTLIER_MAD_ADD(currentState, data)", ImmutableMap.of("currentState", currentState, "data", d));
        if (j >= 1000) {
            j = 0;
            List<MedianAbsoluteDeviationFunctions.State> stateWindow = new ArrayList<>();
            for (int stateIndex = Math.max(0, states.size() - 5); stateIndex < states.size(); ++stateIndex) {
                stateWindow.add(states.get(stateIndex));
            }
            currentState = (MedianAbsoluteDeviationFunctions.State) run(
                    "OUTLIER_MAD_STATE_MERGE(states, currentState)",
                    ImmutableMap.of("states", stateWindow, "currentState", currentState));
        }
    }
    {
        Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)",
                ImmutableMap.of("currentState", currentState, "value", stats.getMin()));
        Assert.assertTrue("Score: " + score + " is not an outlier despite being a minimum.", score > 3.5);
    }
    {
        Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)",
                ImmutableMap.of("currentState", currentState, "value", stats.getMax()));
        Assert.assertTrue("Score: " + score + " is not an outlier despite being a maximum", score > 3.5);
    }
    {
        Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState",
                currentState, "value", stats.getMean() + 4 * stats.getStandardDeviation()));
        Assert.assertTrue(
                "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean",
                score > 3.5);
    }
    {
        Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState",
                currentState, "value", stats.getMean() - 4 * stats.getStandardDeviation()));
        Assert.assertTrue(
                "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean",
                score > 3.5);
    }
    {
        Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)",
                ImmutableMap.of("currentState", currentState, "value", stats.getMean()));
        Assert.assertFalse("Score: " + score + " is an outlier despite being the mean", score > 3.5);
    }
}

From source file:org.apache.metron.statistics.sampling.UniformSamplerTest.java

@BeforeClass
public static void beforeClass() {
    Random rng = new Random(0);
    GaussianRandomGenerator gen = new GaussianRandomGenerator(new MersenneTwister(0));
    for (int i = 0; i < SAMPLE_SIZE; ++i) {
        double us = 10 * rng.nextDouble();
        uniformSample.add(us);//from www.j  a v a  2 s  .  c o m
        uniformStats.addValue(us);
        double gs = 10 * gen.nextNormalizedDouble();
        gaussianSample.add(gs);
        gaussianStats.addValue(gs);
    }
}

From source file:org.apache.metron.statistics.StatisticalBinningPerformanceDriver.java

public static void main(String... argv) {
    DescriptiveStatistics perfStats = new DescriptiveStatistics();
    OnlineStatisticsProvider statsProvider = new OnlineStatisticsProvider();
    List<Double> values = new ArrayList<>();
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(0L));
    for (int i = 0; i < NUM_DATA_POINTS; ++i) {
        //get the data point out of the [0,1] range
        double d = 1000 * gaussian.nextNormalizedDouble();
        values.add(d);//  w  ww.  ja  va2 s.c  o m
        statsProvider.addValue(d);
    }

    for (int perfRun = 0; perfRun < NUM_RUNS; ++perfRun) {
        StellarStatisticsFunctions.StatsBin bin = new StellarStatisticsFunctions.StatsBin();
        long start = System.currentTimeMillis();
        Random r = new Random(0);
        for (int i = 0; i < TRIALS_PER_RUN; ++i) {
            //grab a random value and fuzz it a bit so we make sure there's no cheating via caching in t-digest.
            bin.apply(ImmutableList.of(statsProvider, values.get(r.nextInt(values.size())) - 3.5, PERCENTILES));
        }
        perfStats.addValue(System.currentTimeMillis() - start);
    }
    System.out.println("Min/25th/50th/75th/Max Milliseconds: " + perfStats.getMin() + " / "
            + perfStats.getPercentile(25) + " / " + perfStats.getPercentile(50) + " / "
            + perfStats.getPercentile(75) + " / " + perfStats.getMax());
}

From source file:org.apache.metron.statistics.StellarStatisticsFunctionsTest.java

@Test
public void testMergeProviders() throws Exception {
    List<StatisticsProvider> providers = new ArrayList<>();
    /*/*from  w w  w. jav a  2 s .c om*/
    Create 10 providers, each with a sample drawn from a gaussian distribution.
    Update the reference stats from commons math to ensure we are
     */
    GaussianRandomGenerator gaussian = new GaussianRandomGenerator(new MersenneTwister(1L));
    SummaryStatistics sStatistics = new SummaryStatistics();
    DescriptiveStatistics dStatistics = new DescriptiveStatistics();
    for (int i = 0; i < 10; ++i) {
        List<Double> sample = new ArrayList<>();
        for (int j = 0; j < 100; ++j) {
            double s = gaussian.nextNormalizedDouble();
            sample.add(s);
            sStatistics.addValue(s);
            dStatistics.addValue(s);
        }
        StatisticsProvider provider = (StatisticsProvider) run(
                "STATS_ADD(STATS_INIT(), " + Joiner.on(",").join(sample) + ")", new HashMap<>());
        providers.add(provider);
    }

    /*
    Merge the providers and validate
     */
    Map<String, Object> providerVariables = new HashMap<>();
    for (int i = 0; i < providers.size(); ++i) {
        providerVariables.put("provider_" + i, providers.get(i));
    }
    StatisticsProvider mergedProvider = (StatisticsProvider) run(
            "STATS_MERGE([" + Joiner.on(",").join(providerVariables.keySet()) + "])", providerVariables);
    OnlineStatisticsProviderTest.validateStatisticsProvider(mergedProvider, sStatistics, dStatistics);

}