View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.math.distribution;
18  
19  /**
20   * A concrete distribution factory.  This is the default factory used by
21   * Commons-Math.
22   *  
23   * @version $Revision: 545192 $ $Date: 2007-06-07 07:35:04 -0700 (Thu, 07 Jun 2007) $
24   * @deprecated pluggability of distribution instances is now provided through
25   *             constructors and setters.
26   */
27  public class DistributionFactoryImpl extends DistributionFactory {
28  
29      /**
30       * Default constructor.  Package scope to prevent unwanted instantiation. 
31       */
32      public DistributionFactoryImpl() {
33          super();
34      }
35      
36      /**
37       * Create a new chi-square distribution with the given degrees of freedom.
38       * 
39       * @param degreesOfFreedom degrees of freedom
40       * @return a new chi-square distribution  
41       */
42      public ChiSquaredDistribution createChiSquareDistribution(
43          final double degreesOfFreedom) {
44              
45          return new ChiSquaredDistributionImpl(degreesOfFreedom);
46      }
47      
48      /**
49       * Create a new gamma distribution the given shape and scale parameters.
50       * 
51       * @param alpha the shape parameter
52       * @param beta the scale parameter
53       * @return a new gamma distribution  
54       */
55      public GammaDistribution createGammaDistribution(
56          double alpha, double beta) {
57  
58          return new GammaDistributionImpl(alpha, beta);
59      }
60  
61      /**
62       * Create a new t distribution with the given degrees of freedom.
63       * 
64       * @param degreesOfFreedom degrees of freedom
65       * @return a new t distribution.  
66       */
67      public TDistribution createTDistribution(double degreesOfFreedom) {
68          return new TDistributionImpl(degreesOfFreedom);
69      }
70  
71      /**
72       * Create a new F-distribution with the given degrees of freedom.
73       * 
74       * @param numeratorDegreesOfFreedom numerator degrees of freedom
75       * @param denominatorDegreesOfFreedom denominator degrees of freedom
76       * @return a new F-distribution 
77       */
78      public FDistribution createFDistribution(
79          double numeratorDegreesOfFreedom,
80          double denominatorDegreesOfFreedom) {
81          return new FDistributionImpl(numeratorDegreesOfFreedom,
82              denominatorDegreesOfFreedom);
83      }
84  
85      /**
86       * Create a new exponential distribution with the given degrees of freedom.
87       * 
88       * @param mean mean
89       * @return a new exponential distribution  
90       */
91      public ExponentialDistribution createExponentialDistribution(double mean) {
92          return new ExponentialDistributionImpl(mean);
93      }    
94  
95      /**
96       * Create a binomial distribution with the given number of trials and
97       * probability of success.
98       * 
99       * @param numberOfTrials the number of trials
100      * @param probabilityOfSuccess the probability of success
101      * @return a new binomial distribution
102      */
103     public BinomialDistribution createBinomialDistribution(
104         int numberOfTrials, double probabilityOfSuccess) {
105         return new BinomialDistributionImpl(numberOfTrials,
106             probabilityOfSuccess);
107     }
108 
109     /**
110      * Create a new hypergeometric distribution with the given the population
111      * size, the number of successes in the population, and the sample size.
112      * 
113      * @param populationSize the population size
114      * @param numberOfSuccesses number of successes in the population
115      * @param sampleSize the sample size
116      * @return a new hypergeometric desitribution
117      */
118     public HypergeometricDistribution createHypergeometricDistribution(
119         int populationSize, int numberOfSuccesses, int sampleSize) {
120         return new HypergeometricDistributionImpl(populationSize,
121             numberOfSuccesses, sampleSize);
122     }
123 
124     /**
125      * Create a new normal distribution with the given mean and standard
126      * deviation.
127      *  
128      * @param mean the mean of the distribution
129      * @param sd standard deviation
130      * @return a new normal distribution 
131      */   
132     public NormalDistribution createNormalDistribution(double mean, double sd) {
133         return new NormalDistributionImpl(mean, sd);
134     }
135 
136     /**
137      * Create a new normal distribution with the mean zero and standard
138      * deviation one.
139      * 
140      * @return a new normal distribution  
141      */ 
142     public NormalDistribution createNormalDistribution() {
143         return new NormalDistributionImpl();
144     }
145     
146     /**
147      * Create a new Poisson distribution with poisson parameter lambda.
148      * <p>
149      * lambda must be postive; otherwise an 
150      * <code>IllegalArgumentException</code> is thrown.
151      * 
152      * @param lambda poisson parameter
153      * @return a new Poisson distribution  
154      * @throws IllegalArgumentException if lambda &le; 0
155      */               
156     public PoissonDistribution  createPoissonDistribution(double lambda) {
157         return new PoissonDistributionImpl(lambda);
158     }
159 }