View Javadoc

1   /*
2    * @(#)DistUniform.java Apr 3, 2003
3    * 
4    * Copyright (c) 2003 Delft University of Technology Jaffalaan 5, 2628 BX Delft,
5    * the Netherlands All rights reserved.
6    * 
7    * This software is proprietary information of Delft University of Technology
8    * The code is published under the General Public License
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  }