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 useCollectionSampler
.Sampling uses
UniformRandomProvider.nextDouble()
.- Since:
- 1.1
-
-
Constructor Summary
Constructors Constructor Description DiscreteProbabilityCollectionSampler(UniformRandomProvider rng, List<T> collection, double[] probabilities)
Creates a sampler.DiscreteProbabilityCollectionSampler(UniformRandomProvider rng, Map<T,Double> collection)
Creates a sampler.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description T
sample()
Picks one of the items from the collection passed to the constructor.DiscreteProbabilityCollectionSampler<T>
withUniformRandomProvider(UniformRandomProvider rng)
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.
-
-
-
Constructor Detail
-
DiscreteProbabilityCollectionSampler
public DiscreteProbabilityCollectionSampler(UniformRandomProvider rng, Map<T,Double> collection)
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
.
-
-
Method Detail
-
sample
public T sample()
Picks one of the items from the collection passed to the constructor.- Specified by:
sample
in interfaceObjectSampler<T>
- Returns:
- a random sample.
-
withUniformRandomProvider
public DiscreteProbabilityCollectionSampler<T> withUniformRandomProvider(UniformRandomProvider rng)
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
-
-