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:
Serializable, Generator<O>

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

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

Author:
Peter Knoppers
See Also:
  • Constructor Details

    • Distribution

      public Distribution(List<Distribution.FrequencyAndObject<O>> generators, nl.tudelft.simulation.jstats.streams.StreamInterface stream) throws ProbabilityException
      Construct a new Distribution.
      Parameters:
      generators - List<FrequencyAndObject<O>>; the generators and their frequencies (or probabilities)
      stream - StreamInterface; source for randomness
      Throws:
      ProbabilityException - when a frequency (or probability) is negative, or when generators is null or stream is null
    • Distribution

      public Distribution(nl.tudelft.simulation.jstats.streams.StreamInterface stream) throws ProbabilityException
      Construct a new Distribution with no generators.
      Parameters:
      stream - StreamInterface; source for randomness
      Throws:
      ProbabilityException - when a frequency (or probability) is negative, or when generators is null or stream is null
  • 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 IndexOutOfBoundsException, ProbabilityException
      Remove the generator at the specified position from the internally stored list.
      Parameters:
      index - int; the position
      Returns:
      this
      Throws:
      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 Object
    • equals

      public final boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public final String toString()
      Overrides:
      toString in class Object