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>
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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Immutable storage for a frequency (or probability) plus a Generator. -
Constructor Summary
ConstructorDescriptionDistribution
(List<Distribution.FrequencyAndObject<O>> generators, nl.tudelft.simulation.jstats.streams.StreamInterface stream) Construct a new Distribution.Distribution
(nl.tudelft.simulation.jstats.streams.StreamInterface stream) Construct a new Distribution with no generators. -
Method Summary
Modifier and TypeMethodDescriptionfinal Distribution<O>
add
(int index, Distribution.FrequencyAndObject<O> generator) Insert a generator at the specified position in the internally stored list.final Distribution<O>
add
(Distribution.FrequencyAndObject<O> generator) Append a generator to the internally stored list.final Distribution<O>
clear()
Empty the internally stored list.final O
draw()
Generate the next object.final boolean
final Distribution.FrequencyAndObject<O>
get
(int index) Retrieve one of the internally stored generators.final int
hashCode()
final Distribution<O>
modifyFrequency
(int index, double frequency) Alter the frequency (or probability) of one of the stored generators.final Distribution<O>
remove
(int index) Remove the generator at the specified position from the internally stored list.final Distribution<O>
set
(int index, Distribution.FrequencyAndObject<O> generator) Replace the generator at the specified position.final int
size()
Report the number of generators.final String
toString()
-
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
Generate the next object.- Specified by:
draw
in interfaceGenerator<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 generatorgenerator
- 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 >= sizeProbabilityException
- 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 replacedgenerator
- 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 generatorfrequency
- double; new frequency (or probability)- Returns:
- this
- Throws:
ProbabilityException
- when the frequency (or probability) < 0, or when index is < 0 or >= size
-
clear
Empty the internally stored list.- Returns:
- this
-
get
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() -
equals
-
toString
-