Search in sources :

Example 1 with RandomEngine

use of cern.jet.random.engine.RandomEngine in project stream-lib by addthis.

the class QDigestTest method testComprehensiveOnMixture.

@Test
public void testComprehensiveOnMixture() {
    RandomEngine r = new MersenneTwister64(0);
    Normal[] dists = new Normal[] { new Normal(100, 50, r), new Normal(150, 20, r), new Normal(500, 300, r), new Normal(10000, 10000, r), new Normal(1200, 300, r) };
    for (int numSamples : new int[] { 1, 10, 100, 1000, 10000 }) {
        long[][] samples = new long[dists.length][];
        for (int i = 0; i < dists.length; ++i) {
            samples[i] = new long[numSamples];
            for (int j = 0; j < samples[i].length; ++j) {
                samples[i][j] = (long) Math.max(0, dists[i].nextDouble());
            }
        }
        double compressionFactor = 1000;
        int logCapacity = 1;
        long max = 0;
        for (long[] s : samples) {
            for (long x : s) max = Math.max(max, x);
        }
        for (double scale = 1; scale < max; scale *= 2, logCapacity++) {
            ;
        }
        double eps = logCapacity / compressionFactor;
        QDigest[] digests = new QDigest[dists.length];
        for (int i = 0; i < digests.length; ++i) {
            digests[i] = new QDigest(compressionFactor);
            for (long x : samples[i]) {
                digests[i].offer(x);
            }
            assertEquals(samples[i].length, digests[i].computeActualSize());
        }
        int numTotal = 0;
        for (int i = 0; i < digests.length; ++i) {
            for (double q = 0; q <= 1; q += 0.01) {
                long res = digests[i].getQuantile(q);
                double[] actualRank = actualRankOf(res, samples[i]);
                assertTrue(actualRank[0] + " .. " + actualRank[1] + " outside error bound for  " + q, q >= actualRank[0] - eps && q <= actualRank[1] + eps);
            }
            // Test the same on the union of all distributions up to i-th
            numTotal += samples[i].length;
            long[] total = new long[numTotal];
            int offset = 0;
            QDigest totalDigest = new QDigest(compressionFactor);
            long expectedSize = 0;
            for (int j = 0; j <= i; ++j) {
                System.arraycopy(samples[j], 0, total, offset, samples[j].length);
                offset += samples[j].length;
                totalDigest = QDigest.unionOf(totalDigest, digests[j]);
                expectedSize += samples[j].length;
            }
            assertEquals(expectedSize, totalDigest.computeActualSize());
            for (double q = 0; q <= 1; q += 0.01) {
                long res = totalDigest.getQuantile(q);
                double[] actualRank = actualRankOf(res, total);
                assertTrue(actualRank[0] + " .. " + actualRank[1] + " outside error bound for  " + q, q >= actualRank[0] - eps && q <= actualRank[1] + eps);
            }
        }
    }
}
Also used : MersenneTwister64(cern.jet.random.engine.MersenneTwister64) RandomEngine(cern.jet.random.engine.RandomEngine) Normal(cern.jet.random.Normal) Test(org.junit.Test)

Example 2 with RandomEngine

use of cern.jet.random.engine.RandomEngine in project stream-lib by addthis.

the class TestStochasticTopper method testZipfianDistribution.

@Test
public void testZipfianDistribution() {
    RandomEngine re = RandomEngine.makeDefault();
    for (int i = 0; i < NUM_ITERATIONS; i++) {
        int z = Distributions.nextZipfInt(1.2D, re);
        vs.offer(z);
    }
    List<Integer> top = vs.peek(5);
    System.out.println("Zipfian:");
    for (Integer e : top) {
        System.out.println(e);
    }
    int tippyTop = top.get(0);
    assertTrue(tippyTop < 3);
}
Also used : RandomEngine(cern.jet.random.engine.RandomEngine) Test(org.junit.Test)

Example 3 with RandomEngine

use of cern.jet.random.engine.RandomEngine in project stream-lib by addthis.

the class TestStochasticTopper method testGeometricDistribution.

@Test
public void testGeometricDistribution() {
    RandomEngine re = RandomEngine.makeDefault();
    for (int i = 0; i < NUM_ITERATIONS; i++) {
        int z = Distributions.nextGeometric(0.25, re);
        vs.offer(z);
    }
    List<Integer> top = vs.peek(5);
    System.out.println("Geometric:");
    for (Integer e : top) {
        System.out.println(e);
    }
    int tippyTop = top.get(0);
    assertTrue(tippyTop < 3);
}
Also used : RandomEngine(cern.jet.random.engine.RandomEngine) Test(org.junit.Test)

Example 4 with RandomEngine

use of cern.jet.random.engine.RandomEngine in project stream-lib by addthis.

the class TestStreamSummary method testGeometricDistribution.

@Test
public void testGeometricDistribution() {
    StreamSummary<Integer> vs = new StreamSummary<Integer>(10);
    RandomEngine re = RandomEngine.makeDefault();
    for (int i = 0; i < NUM_ITERATIONS; i++) {
        int z = Distributions.nextGeometric(0.25, re);
        vs.offer(z);
    }
    List<Integer> top = vs.peek(5);
    System.out.println("Geometric:");
    for (Integer e : top) {
        System.out.println(e);
    }
    int tippyTop = top.get(0);
    assertEquals(0, tippyTop);
    System.out.println(vs);
}
Also used : RandomEngine(cern.jet.random.engine.RandomEngine) Test(org.junit.Test)

Example 5 with RandomEngine

use of cern.jet.random.engine.RandomEngine in project micrometer by micrometer-metrics.

the class CounterSample method main.

public static void main(String[] args) {
    MeterRegistry registry = SampleConfig.myMonitoringSystem();
    Counter counter = registry.counter("counter", "method", "actual");
    AtomicInteger n = new AtomicInteger(0);
    registry.more().counter("counter", Tags.of("method", "function"), n);
    RandomEngine r = new MersenneTwister64(0);
    Normal dist = new Normal(0, 1, r);
    Flux.interval(Duration.ofMillis(10)).doOnEach(d -> {
        if (dist.nextDouble() + 0.1 > 0) {
            counter.increment();
            n.incrementAndGet();
        }
    }).blockLast();
}
Also used : Counter(io.micrometer.core.instrument.Counter) Tags(io.micrometer.core.instrument.Tags) Flux(reactor.core.publisher.Flux) RandomEngine(cern.jet.random.engine.RandomEngine) SampleConfig(io.micrometer.core.samples.utils.SampleConfig) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Normal(cern.jet.random.Normal) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Duration(java.time.Duration) MersenneTwister64(cern.jet.random.engine.MersenneTwister64) Counter(io.micrometer.core.instrument.Counter) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MersenneTwister64(cern.jet.random.engine.MersenneTwister64) RandomEngine(cern.jet.random.engine.RandomEngine) Normal(cern.jet.random.Normal) MeterRegistry(io.micrometer.core.instrument.MeterRegistry)

Aggregations

RandomEngine (cern.jet.random.engine.RandomEngine)16 Normal (cern.jet.random.Normal)8 MersenneTwister64 (cern.jet.random.engine.MersenneTwister64)7 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)6 SampleConfig (io.micrometer.core.samples.utils.SampleConfig)6 Duration (java.time.Duration)6 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)6 Test (org.junit.Test)6 Flux (reactor.core.publisher.Flux)6 Timer (io.micrometer.core.instrument.Timer)4 TimeUnit (java.util.concurrent.TimeUnit)4 MersenneTwister (cern.jet.random.engine.MersenneTwister)2 FunctionTimer (io.micrometer.core.instrument.FunctionTimer)2 ChiSquare (cern.jet.random.ChiSquare)1 Counter (io.micrometer.core.instrument.Counter)1 LongTaskTimer (io.micrometer.core.instrument.LongTaskTimer)1 Tags (io.micrometer.core.instrument.Tags)1 TimeUtils (io.micrometer.core.instrument.util.TimeUtils)1 Map (java.util.Map)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1