1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.hipparchus.distribution.continuous;
24
25 import org.hipparchus.exception.MathIllegalArgumentException;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28
29 import static org.junit.jupiter.api.Assertions.assertEquals;
30 import static org.junit.jupiter.api.Assertions.assertThrows;
31
32
33
34
35 public class UniformRealDistributionTest extends RealDistributionAbstractTest {
36
37
38
39 @BeforeEach
40 @Override
41 public void setUp() {
42 super.setUp();
43 setTolerance(1e-4);
44 }
45
46
47
48
49 @Override
50 public UniformRealDistribution makeDistribution() {
51 return new UniformRealDistribution(-0.5, 1.25);
52 }
53
54
55 @Override
56 public double[] makeCumulativeTestPoints() {
57 return new double[] {-0.5001, -0.5, -0.4999, -0.25, -0.0001, 0.0,
58 0.0001, 0.25, 1.0, 1.2499, 1.25, 1.2501};
59 }
60
61
62 @Override
63 public double[] makeCumulativeTestValues() {
64 return new double[] {0.0, 0.0, 0.0001, 0.25/1.75, 0.4999/1.75,
65 0.5/1.75, 0.5001/1.75, 0.75/1.75, 1.5/1.75,
66 1.7499/1.75, 1.0, 1.0};
67 }
68
69
70 @Override
71 public double[] makeDensityTestValues() {
72 double d = 1 / 1.75;
73 return new double[] {0, d, d, d, d, d, d, d, d, d, d, 0};
74 }
75
76
77
78
79 @Test
80 void testGetLowerBound() {
81 UniformRealDistribution distribution = makeDistribution();
82 assertEquals(-0.5, distribution.getSupportLowerBound(), 0);
83 }
84
85
86 @Test
87 void testGetUpperBound() {
88 UniformRealDistribution distribution = makeDistribution();
89 assertEquals(1.25, distribution.getSupportUpperBound(), 0);
90 }
91
92
93 @Test
94 void testPreconditions1() {
95 assertThrows(MathIllegalArgumentException.class, () -> {
96 new UniformRealDistribution(0, 0);
97 });
98 }
99
100
101 @Test
102 void testPreconditions2() {
103 assertThrows(MathIllegalArgumentException.class, () -> {
104 new UniformRealDistribution(1, 0);
105 });
106 }
107
108
109 @Test
110 void testMeanVariance() {
111 UniformRealDistribution dist;
112
113 dist = new UniformRealDistribution(0, 1);
114 assertEquals(0.5, dist.getNumericalMean(), 0);
115 assertEquals(dist.getNumericalVariance(), 1/12.0, 0);
116
117 dist = new UniformRealDistribution(-1.5, 0.6);
118 assertEquals(dist.getNumericalMean(), -0.45, 0);
119 assertEquals(0.3675, dist.getNumericalVariance(), 0);
120
121 dist = new UniformRealDistribution(-0.5, 1.25);
122 assertEquals(0.375, dist.getNumericalMean(), 0);
123 assertEquals(0.2552083333333333, dist.getNumericalVariance(), 0);
124 }
125
126
127
128
129
130 @Test
131 void testInverseCumulativeDistribution() {
132 UniformRealDistribution dist = new UniformRealDistribution(0, 1e-9);
133
134 assertEquals(2.5e-10, dist.inverseCumulativeProbability(0.25), 0);
135 }
136 }