public class CombinationSampler extends Object implements SharedStateObjectSampler<int[]>
A combination is a selection of items from a collection, such that (unlike
permutations) the order of selection does not matter. This
sampler can be used to generate a combination in an unspecified order and is
faster than the corresponding PermutationSampler.
Note that the sample order is unspecified. For example a sample
combination of 2 from 4 may return [0,1] or [1,0] as the two are
equivalent, and the order of a given combination may change in subsequent samples.
The sampler can be used to generate indices to select subsets where the order of the subset is not important.
Sampling uses UniformRandomProvider.nextInt(int).
PermutationSampler| Constructor and Description |
|---|
CombinationSampler(UniformRandomProvider rng,
int n,
int k)
Creates a generator of combinations.
|
| Modifier and Type | Method and Description |
|---|---|
int[] |
sample()
Return a combination of
k whose entries are selected randomly,
without repetition, from the integers 0, 1, ..., n-1 (inclusive). |
CombinationSampler |
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.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitsamples, samplespublic CombinationSampler(UniformRandomProvider rng, int n, int k)
The sample() method will generate an integer array of
length k whose entries are selected randomly, without
repetition, from the integers 0, 1, ..., n-1 (inclusive).
The returned array represents a combination of n taken
k.
In contrast to a permutation, the returned array is not
guaranteed to be in a random order. The sample()
method returns the array in an unspecified order.
If n <= 0 or k <= 0 or k > n then no combination
is required and an exception is raised.
rng - Generator of uniformly distributed random numbers.n - Domain of the combination.k - Size of the combination.IllegalArgumentException - if n <= 0 or k <= 0 or
k > n.public int[] sample()
k whose entries are selected randomly,
without repetition, from the integers 0, 1, ..., n-1 (inclusive).
The order of the returned array is not guaranteed to be in a random order as the order of a combination does not matter.
sample in interface ObjectSampler<int[]>public CombinationSampler withUniformRandomProvider(UniformRandomProvider rng)
withUniformRandomProvider in interface SharedStateSampler<SharedStateObjectSampler<int[]>>rng - Generator of uniformly distributed random numbers.Copyright © 2016–2022 The Apache Software Foundation. All rights reserved.