1 package org.lcsim.math.distribution;
2
3 import junit.framework.TestCase;
4
5
6
7
8
9
10
11 public class EmpiricalDistributionTest extends TestCase
12 {
13
14
15
16
17 public void testEmpiricalDistribution()
18 {
19 double[] input =
20 {
21 0., 1., 2., 1., 0.
22 };
23 EmpiricalDistribution ed = new EmpiricalDistribution(input);
24
25
26
27
28
29 double sum = 0.;
30 int nTrials = 100000;
31 for (int i = 0; i < nTrials; ++i)
32 {
33 double ran = ed.nextDouble();
34 sum += ran;
35 assertTrue(ran > 0.2);
36 assertTrue(ran < 0.8);
37 }
38 double average = sum / nTrials;
39 assertEquals(0.5, average, .002);
40
41
42 double[] bimodal =
43 {
44 0., 1., 0., 1., 0.
45 };
46 ed = new EmpiricalDistribution(bimodal);
47
48
49
50
51
52 nTrials = 100000;
53 ed.setSeed(12345);
54 double oldRand = ed.nextDouble();
55 for (int i = 0; i < nTrials; ++i)
56 {
57 double ran = ed.nextDouble();
58 sum += ran;
59 assertTrue((0.2 < ran && ran < 0.4) || (0.6 < ran && ran < 0.8));
60 }
61 ed.setSeed(12345);
62 double newRand = ed.nextDouble();
63 assertEquals(oldRand, newRand);
64
65 }
66 }