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<FrequencyAndObject<O>> generators, nl.tudelft.simulation.jstats.streams.StreamInterface stream)
      Construct a new Distribution.
      Parameters:
      generators - the generators and their frequencies (or probabilities)
      stream - source for randomness
      Throws:
      NullPointerException - when generators is null or stream is null
      IllegalArgumentException - when a frequency (or probability) is negative
    • Distribution

      public Distribution(nl.tudelft.simulation.jstats.streams.StreamInterface stream)
      Construct a new Distribution with no generators.
      Parameters:
      stream - source for randomness
      Throws:
      NullPointerException - when generators is null or stream is null
  • Method Details

    • draw

      public final O draw()
      Description copied from interface: Generator
      Generate the next object.
      Specified by:
      draw in interface Generator<O>
      Returns:
      an object randomly selected from the stored collection
    • add

      public final Distribution<O> add(FrequencyAndObject<O> generator)
      Append a generator to the internally stored list.
      Parameters:
      generator - the generator to add
      Returns:
      this
      Throws:
      NullPointerException - when generator is null
    • add

      public final Distribution<O> add(int index, FrequencyAndObject<O> generator)
      Insert a generator at the specified position in the internally stored list.
      Parameters:
      index - position to store the generator
      generator - the generator to add
      Returns:
      this
      Throws:
      IndexOutOfBoundsException - when index is < 0 or >= size
      NullPointerException - when generator is null
    • remove

      public final Distribution<O> remove(int index)
      Remove the generator at the specified position from the internally stored list.
      Parameters:
      index - the position
      Returns:
      this
      Throws:
      IndexOutOfBoundsException - when index is < 0 or >= size
    • set

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

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

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

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

      public final int size()
      Report the number of generators.
      Returns:
      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