1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.math.distribution;
17
18 /**
19 * A concrete distribution factory. This is the default factory used by
20 * Commons-Math.
21 *
22 * @version $Revision: 201915 $ $Date: 2005-06-26 15:20:57 -0700 (Sun, 26 Jun 2005) $
23 */
24 public class DistributionFactoryImpl extends DistributionFactory {
25
26 /**
27 * Default constructor. Package scope to prevent unwanted instantiation.
28 */
29 public DistributionFactoryImpl() {
30 super();
31 }
32
33 /**
34 * Create a new chi-square distribution with the given degrees of freedom.
35 *
36 * @param degreesOfFreedom degrees of freedom
37 * @return a new chi-square distribution
38 */
39 public ChiSquaredDistribution createChiSquareDistribution(
40 final double degreesOfFreedom) {
41
42 return new ChiSquaredDistributionImpl(degreesOfFreedom);
43 }
44
45 /**
46 * Create a new gamma distribution the given shape and scale parameters.
47 *
48 * @param alpha the shape parameter
49 * @param beta the scale parameter
50 * @return a new gamma distribution
51 */
52 public GammaDistribution createGammaDistribution(
53 double alpha, double beta) {
54
55 return new GammaDistributionImpl(alpha, beta);
56 }
57
58 /**
59 * Create a new t distribution with the given degrees of freedom.
60 *
61 * @param degreesOfFreedom degrees of freedom
62 * @return a new t distribution.
63 */
64 public TDistribution createTDistribution(double degreesOfFreedom) {
65 return new TDistributionImpl(degreesOfFreedom);
66 }
67
68 /**
69 * Create a new F-distribution with the given degrees of freedom.
70 *
71 * @param numeratorDegreesOfFreedom numerator degrees of freedom
72 * @param denominatorDegreesOfFreedom denominator degrees of freedom
73 * @return a new F-distribution
74 */
75 public FDistribution createFDistribution(
76 double numeratorDegreesOfFreedom,
77 double denominatorDegreesOfFreedom) {
78 return new FDistributionImpl(numeratorDegreesOfFreedom,
79 denominatorDegreesOfFreedom);
80 }
81
82 /**
83 * Create a new exponential distribution with the given degrees of freedom.
84 *
85 * @param mean mean
86 * @return a new exponential distribution
87 */
88 public ExponentialDistribution createExponentialDistribution(double mean) {
89 return new ExponentialDistributionImpl(mean);
90 }
91
92 /**
93 * Create a binomial distribution with the given number of trials and
94 * probability of success.
95 *
96 * @param numberOfTrials the number of trials
97 * @param probabilityOfSuccess the probability of success
98 * @return a new binomial distribution
99 */
100 public BinomialDistribution createBinomialDistribution(
101 int numberOfTrials, double probabilityOfSuccess) {
102 return new BinomialDistributionImpl(numberOfTrials,
103 probabilityOfSuccess);
104 }
105
106 /**
107 * Create a new hypergeometric distribution with the given the population
108 * size, the number of successes in the population, and the sample size.
109 *
110 * @param populationSize the population size
111 * @param numberOfSuccesses number of successes in the population
112 * @param sampleSize the sample size
113 * @return a new hypergeometric desitribution
114 */
115 public HypergeometricDistribution createHypergeometricDistribution(
116 int populationSize, int numberOfSuccesses, int sampleSize) {
117 return new HypergeometricDistributionImpl(populationSize,
118 numberOfSuccesses, sampleSize);
119 }
120
121 /**
122 * Create a new normal distribution with the given mean and standard
123 * deviation.
124 *
125 * @param mean the mean of the distribution
126 * @param sd standard deviation
127 * @return a new normal distribution
128 */
129 public NormalDistribution createNormalDistribution(double mean, double sd) {
130 return new NormalDistributionImpl(mean, sd);
131 }
132
133 /**
134 * Create a new normal distribution with the mean zero and standard
135 * deviation one.
136 *
137 * @return a new normal distribution
138 */
139 public NormalDistribution createNormalDistribution() {
140 return new NormalDistributionImpl();
141 }
142
143 /**
144 * Create a new Poisson distribution with poisson parameter lambda.
145 * <p>
146 * lambda must be postive; otherwise an
147 * <code>IllegalArgumentException</code> is thrown.
148 *
149 * @param lambda poisson parameter
150 * @return a new Poisson distribution
151 * @throws IllegalArgumentException if lambda ≤ 0
152 */
153 public PoissonDistribution createPoissonDistribution(double lambda) {
154 return new PoissonDistributionImpl(lambda);
155 }
156
157 }