Class Distribution<O>

java.lang.Object
org.opentrafficsim.core.distributions.Distribution<O>
Type Parameters:
O - Type of the object returned by the draw method
All Implemented Interfaces:
java.io.Serializable, Generator<O>

public class Distribution<O>
extends java.lang.Object
implements Generator<O>, java.io.Serializable
Generic implementation of a set of objects that have a draw method with corresponding probabilities / frequencies.

Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Version:
$Revision$, $LastChangedDate$, by $Author$, initial version Mar 1, 2016
Author:
Peter Knoppers
See Also:
Serialized Form
  • Constructor Details

  • Method Details

    • draw

      public final O draw() throws ProbabilityException
      Generate the next object.
      Specified by:
      draw in interface Generator<O>
      Returns:
      O; an object randomly selected from the stored collection
      Throws:
      ProbabilityException - if the stored collection is empty
    • add

      public final Distribution<O> add​(Distribution.FrequencyAndObject<O> generator) throws ProbabilityException
      Append a generator to the internally stored list.
      Parameters:
      generator - FrequencyAndObject<O>; the generator to add
      Returns:
      Distribution<O>; this
      Throws:
      ProbabilityException - when frequency less than zero
    • add

      public final Distribution<O> add​(int index, Distribution.FrequencyAndObject<O> generator) throws ProbabilityException
      Insert a generator at the specified position in the internally stored list.
      Parameters:
      index - int; position to store the generator
      generator - FrequencyAndObject<O>; the generator to add
      Returns:
      Distribution<O>; this
      Throws:
      ProbabilityException - when frequency less than zero
    • remove

      public final Distribution<O> remove​(int index) throws java.lang.IndexOutOfBoundsException, ProbabilityException
      Remove the generator at the specified position from the internally stored list.
      Parameters:
      index - int; the position
      Returns:
      this
      Throws:
      java.lang.IndexOutOfBoundsException - when index is < 0 or >= size
      ProbabilityException - if the sum of the remaining probabilities or frequencies adds up to 0
    • set

      public final Distribution<O> set​(int index, Distribution.FrequencyAndObject<O> generator) throws ProbabilityException
      Replace the generator at the specified position.
      Parameters:
      index - int; the position of the generator that must be replaced
      generator - FrequencyAndObject<O>; the new generator and the frequency (or probability)
      Returns:
      this
      Throws:
      ProbabilityException - when the frequency (or probability) < 0, or when index is < 0 or >= size
    • modifyFrequency

      public final Distribution<O> modifyFrequency​(int index, double frequency) throws ProbabilityException
      Alter the frequency (or probability) of one of the stored generators.
      Parameters:
      index - int; index of the stored generator
      frequency - double; new frequency (or probability)
      Returns:
      this
      Throws:
      ProbabilityException - when the frequency (or probability) < 0, or when index is < 0 or >= size
    • clear

      public final Distribution<O> clear()
      Empty the internally stored list.
      Returns:
      this
    • get

      public final Distribution.FrequencyAndObject<O> get​(int index) throws ProbabilityException
      Retrieve one of the internally stored generators.
      Parameters:
      index - int; the index of the FrequencyAndObject to retrieve
      Returns:
      FrequencyAndObject<O>; the generator stored at position index
      Throws:
      ProbabilityException - when index < 0 or >= size()
    • size

      public final int size()
      Report the number of generators.
      Returns:
      int; the number of generators
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class java.lang.Object
    • equals

      public final boolean equals​(java.lang.Object obj)
      Overrides:
      equals in class java.lang.Object
    • toString

      public final java.lang.String toString()
      Overrides:
      toString in class java.lang.Object