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