Package org.apache.commons.rng.sampling
Class DiscreteProbabilityCollectionSampler<T>
java.lang.Object
org.apache.commons.rng.sampling.DiscreteProbabilityCollectionSampler<T>
- Type Parameters:
T
- Type of items in the collection.
- All Implemented Interfaces:
ObjectSampler<T>
,SharedStateObjectSampler<T>
,SharedStateSampler<SharedStateObjectSampler<T>>
public class DiscreteProbabilityCollectionSampler<T>
extends Object
implements SharedStateObjectSampler<T>
Sampling from a collection of items with user-defined
probabilities.
Note that if all unique items are assigned the same probability,
it is much more efficient to use
CollectionSampler
.
Sampling uses UniformRandomProvider.nextDouble()
.
- Since:
- 1.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final String
The error message for an empty collection.Collection to be sampled from.private final SharedStateDiscreteSampler
Sampler for the probabilities. -
Constructor Summary
ConstructorsModifierConstructorDescriptionDiscreteProbabilityCollectionSampler
(UniformRandomProvider rng, List<T> collection, double[] probabilities) Creates a sampler.DiscreteProbabilityCollectionSampler
(UniformRandomProvider rng, Map<T, Double> collection) Creates a sampler.private
DiscreteProbabilityCollectionSampler
(UniformRandomProvider rng, DiscreteProbabilityCollectionSampler<T> source) -
Method Summary
Modifier and TypeMethodDescriptionprivate static SharedStateDiscreteSampler
createSampler
(UniformRandomProvider rng, double[] probabilities) Creates the sampler of the enumerated probability distribution.sample()
Picks one of the items from the collection passed to the constructor.Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.commons.rng.sampling.ObjectSampler
samples, samples
-
Field Details
-
EMPTY_COLLECTION
The error message for an empty collection.- See Also:
-
items
Collection to be sampled from. -
sampler
Sampler for the probabilities.
-
-
Constructor Details
-
DiscreteProbabilityCollectionSampler
Creates a sampler.- Parameters:
rng
- Generator of uniformly distributed random numbers.collection
- Collection to be sampled, with the probabilities associated to each of its items. A (shallow) copy of the items will be stored in the created instance. The probabilities must be non-negative, but zero values are allowed and their sum does not have to equal one (input will be normalized to make the probabilities sum to one).- Throws:
IllegalArgumentException
- ifcollection
is empty, a probability is negative, infinite orNaN
, or the sum of all probabilities is not strictly positive.
-
DiscreteProbabilityCollectionSampler
public DiscreteProbabilityCollectionSampler(UniformRandomProvider rng, List<T> collection, double[] probabilities) Creates a sampler.- Parameters:
rng
- Generator of uniformly distributed random numbers.collection
- Collection to be sampled. A (shallow) copy of the items will be stored in the created instance.probabilities
- Probability associated to each item of thecollection
. The probabilities must be non-negative, but zero values are allowed and their sum does not have to equal one (input will be normalized to make the probabilities sum to one).- Throws:
IllegalArgumentException
- ifcollection
is empty or a probability is negative, infinite orNaN
, or if the number of items in thecollection
is not equal to the number of providedprobabilities
.
-
DiscreteProbabilityCollectionSampler
private DiscreteProbabilityCollectionSampler(UniformRandomProvider rng, DiscreteProbabilityCollectionSampler<T> source) - Parameters:
rng
- Generator of uniformly distributed random numbers.source
- Source to copy.
-
-
Method Details
-
sample
Picks one of the items from the collection passed to the constructor.- Specified by:
sample
in interfaceObjectSampler<T>
- Returns:
- a random sample.
-
withUniformRandomProvider
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.- Specified by:
withUniformRandomProvider
in interfaceSharedStateSampler<T>
- Parameters:
rng
- Generator of uniformly distributed random numbers.- Returns:
- the sampler
- Since:
- 1.3
-
createSampler
private static SharedStateDiscreteSampler createSampler(UniformRandomProvider rng, double[] probabilities) Creates the sampler of the enumerated probability distribution.- Parameters:
rng
- Generator of uniformly distributed random numbers.probabilities
- Probability associated to each item.- Returns:
- the sampler
-