1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.rng.sampling.distribution;
18
19 import org.apache.commons.rng.UniformRandomProvider;
20 import org.apache.commons.rng.sampling.RandomAssert;
21 import org.junit.jupiter.api.Assertions;
22 import org.junit.jupiter.api.Test;
23
24
25
26
27 class ZigguratNormalizedGaussianSamplerTest {
28
29 @Test
30 void testInfiniteLoop() {
31
32
33
34 final UniformRandomProvider bad = () -> Long.MAX_VALUE;
35
36
37 final ZigguratNormalizedGaussianSampler sampler = new ZigguratNormalizedGaussianSampler(bad);
38 Assertions.assertThrows(StackOverflowError.class,
39 () -> sampler.sample());
40 }
41
42
43
44
45 @Test
46 void testSharedStateSampler() {
47 final UniformRandomProvider rng1 = RandomAssert.seededRNG();
48 final UniformRandomProvider rng2 = RandomAssert.seededRNG();
49 final SharedStateContinuousSampler sampler1 =
50 ZigguratNormalizedGaussianSampler.<ZigguratNormalizedGaussianSampler>of(rng1);
51 final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2);
52 RandomAssert.assertProduceSameSequence(sampler1, sampler2);
53 }
54 }