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.apache.commons.rng.simple.RandomSource;
22 import org.junit.Assert;
23 import org.junit.Test;
24
25
26
27
28 public class ContinuousUniformSamplerTest {
29
30
31
32 @Test
33 public void testNoRestrictionOnOrderOfLowAndHighParameters() {
34 final double low = 3.18;
35 final double high = 5.23;
36 final UniformRandomProvider rng = RandomSource.create(RandomSource.SPLIT_MIX_64);
37 testSampleInRange(rng, low, high);
38 testSampleInRange(rng, high, low);
39 }
40
41 private static void testSampleInRange(UniformRandomProvider rng,
42 double low, double high) {
43 final SharedStateContinuousSampler sampler = ContinuousUniformSampler.of(rng, low, high);
44 final double min = Math.min(low, high);
45 final double max = Math.max(low, high);
46 for (int i = 0; i < 10; i++) {
47 final double value = sampler.sample();
48 Assert.assertTrue("Value not in range", value >= min && value <= max);
49 }
50 }
51
52
53
54
55 @Test
56 public void testSharedStateSampler() {
57 final UniformRandomProvider rng1 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L);
58 final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L);
59 final double low = 1.23;
60 final double high = 4.56;
61 final SharedStateContinuousSampler sampler1 =
62 ContinuousUniformSampler.of(rng1, low, high);
63 final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2);
64 RandomAssert.assertProduceSameSequence(sampler1, sampler2);
65 }
66 }