1   /*
2    * Beta.java
3    *
4    * Created on March 8, 2005, 1:48 PM
5    */
6   
7   package org.mrd.random;
8   
9   /***
10   *
11   * @author  administrator
12   */
13  public class LimitedBeta extends cern.jet.random.Beta{
14      
15      /*** Creates a new instance of Beta */
16      public LimitedBeta(double alpha, double beta, edu.cornell.lassp.houle.RngPack.RandomElement random) {
17          super(alpha,beta,random);
18          
19          if(alpha <= 0) throw new IllegalArgumentException("alpha <= 0.0");
20          if(beta <= 0) throw new IllegalArgumentException("beta <= 0.0");
21      }
22      /*** Creates a new instance of Beta */
23      public LimitedBeta(double arg0, double arg1, edu.cornell.lassp.houle.RngPack.RandomElement random, boolean byMean, boolean limitVariance) {
24          super(1,1,random);
25          
26          if(arg0 <= 0){
27              arg0 = 1.00e-14;
28          }
29          
30          if(arg1 <= 0){
31              arg1 = 1.00e-14;
32          }
33          
34          if(byMean){
35              
36              if(arg0 >= 1){
37                  arg0 = 1.0 - 1.00e-14;
38              }
39              
40              /* if limitVar then don't let the std go over uniform or get bigger than Math.min(1-arg0,arg0) */
41              if(limitVariance){
42                  arg1 = Math.min(arg1,Math.sqrt(1.0/12.0));
43                  arg1 = Math.min(arg1,0.5-Math.abs(arg0-0.5));
44              }
45              
46              double a  =   arg0   * ((( arg0 * ( 1 - arg0 )) / ( arg1 * arg1 )) - 1 );
47              double b  = (1-arg0) * ((( arg0 * ( 1 - arg0 )) / ( arg1 * arg1 )) - 1 );
48              
49              this.setState(Math.min(a,Double.MAX_VALUE),Math.min(b,Double.MAX_VALUE));
50          }else{
51              this.setState(arg0,arg1);   
52          }
53      }
54      
55      /*** Getter for property alpha.
56       * @return Value of property alpha.
57       */
58      public double getAlpha() {
59          return alpha;
60      }
61      
62      /*** Getter for property beta.
63       * @return Value of property beta.
64       */
65      public double getBeta() {
66          return beta;
67      }
68      
69      /*** Getter for property mean.
70       * @return Value of property mean.
71       */
72      public double getMean() {
73          return alpha/(alpha + beta);
74      }
75      
76      /*** Getter for property std.
77       * @return Value of property std.
78       */
79      public double getStd() {
80          return Math.sqrt(getVariance());
81      }
82      
83      /*** Getter for property variance.
84       * @return Value of property variance.
85       */
86      public double getVariance() {
87          return (alpha*beta)/((alpha+beta+1)*Math.pow(alpha+beta,2));
88      }
89  }
This page was automatically generated by Maven