1
2
3
4
5
6
7
8
9
10 package nl.tudelft.simulation.jstats.distributions;
11
12 import nl.tudelft.simulation.jstats.streams.StreamInterface;
13
14 /***
15 * The Uniform distribution. For more information on this distribution see <a
16 * href="http://mathworld.wolfram.com/UniformDistribution.html">
17 * http://mathworld.wolfram.com/UniformDistribution.html </a>
18 * <p>
19 * (c) copyright 2002-2004 <a href="http://www.simulation.tudelft.nl">Delft
20 * University of Technology </a>, the Netherlands. <br>
21 * See for project information <a href="http://www.simulation.tudelft.nl">
22 * www.simulation.tudelft.nl </a> <br>
23 * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
24 * License (GPL) </a>, no warranty <br>
25 *
26 * @author <a href="http://www.tbm.tudelft.nl/webstaf/alexandv/index.htm">
27 * Alexander Verbraeck </a> <br>
28 * <a href="http://www.tbm.tudelft.nl/webstaf/peterja/index.htm"> Peter
29 * Jacobs </a>
30 * @version 1.9 2004-03-22
31 * @since 1.2
32 */
33 public class DistUniform extends DistContinuous
34 {
35 /*** a is the minimum */
36 private double a;
37
38 /*** b is the maximum */
39 private double b;
40
41 /***
42 * constructs a new uniform distribution. a and b are real numbers with a
43 * less than b. a is a location parameter, b-a is a scale parameter.
44 *
45 * @param stream the numberstream
46 * @param a the minimum value
47 * @param b the maximum value
48 */
49 public DistUniform(final StreamInterface stream, final double a,
50 final double b)
51 {
52 super(stream);
53 this.a = a;
54 if (b > a)
55 {
56 this.b = b;
57 } else
58 {
59 throw new IllegalArgumentException("Error Uniform - a >= b");
60 }
61 }
62
63 /***
64 * @see DistContinuous#draw()
65 */
66 public double draw()
67 {
68 return this.a + (this.b - this.a) * this.stream.nextDouble();
69 }
70
71 /***
72 * @see nl.tudelft.simulation.jstats.distributions.DistContinuous
73 * #probDensity(double)
74 */
75 public double probDensity(final double observation)
76 {
77 if (observation >= this.a && observation <= this.b)
78 {
79 return 1.0 / (this.b - this.a);
80 }
81 return 0.0;
82 }
83
84 /***
85 * @see java.lang.Object#toString()
86 */
87 public String toString()
88 {
89 return "Uniform(" + this.a + "," + this.b + ")";
90 }
91 }