View Javadoc

1   package org.lcsim.math.distribution;
2   
3   import junit.framework.TestCase;
4   
5   /**
6    *
7    * @author Norman A. Graf
8    *
9    * @version $Id: 
10   */
11  public class EmpiricalDistributionTest extends TestCase
12  {
13  
14      /**
15       * Test of class EmpiricalDistribution.
16       */
17      public void testEmpiricalDistribution()
18      {
19          double[] input =
20          {
21              0., 1., 2., 1., 0.
22          };
23          EmpiricalDistribution ed = new EmpiricalDistribution(input);
24  //        for (int i = 0; i < input.length; ++i)
25  //        {
26  //            System.out.println(i);
27  //            System.out.println("input[" + i + "]= " + input[i] + " pdf[" + (i + 1) + "]= " + ed.pdf(i + 1));
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  //        System.out.println("\n*********\n");
42          double[] bimodal =
43          {
44              0., 1., 0., 1., 0.
45          };
46          ed = new EmpiricalDistribution(bimodal);
47  //        for (int i = 0; i < bimodal.length; ++i)
48  //        {
49  //            System.out.println(i);
50  //            System.out.println("bimodal[" + i + "]= " + bimodal[i] + " pdf[" + (i + 1) + "]= " + ed.pdf(i + 1));
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  }