Class CombinationSampler
 java.lang.Object

 org.apache.commons.rng.sampling.CombinationSampler

 All Implemented Interfaces:
ObjectSampler<int[]>
,SharedStateObjectSampler<int[]>
,SharedStateSampler<SharedStateObjectSampler<int[]>>
public class CombinationSampler extends Object implements SharedStateObjectSampler<int[]>
Class for representing combinations of a sequence of integers.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)
. See Also:
PermutationSampler


Constructor Summary
Constructors Constructor Description CombinationSampler(UniformRandomProvider rng, int n, int k)
Creates a generator of combinations.

Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
sample()
Return a combination ofk
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.



Constructor Detail

CombinationSampler
public CombinationSampler(UniformRandomProvider rng, int n, int k)
Creates a generator of combinations.The
sample()
method will generate an integer array of lengthk
whose entries are selected randomly, without repetition, from the integers 0, 1, ...,n
1 (inclusive). The returned array represents a combination ofn
takenk
.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
ork <= 0
ork > n
then no combination is required and an exception is raised. Parameters:
rng
 Generator of uniformly distributed random numbers.n
 Domain of the combination.k
 Size of the combination. Throws:
IllegalArgumentException
 ifn <= 0
ork <= 0
ork > n
.


Method Detail

sample
public int[] sample()
Return a combination ofk
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.
 Specified by:
sample
in interfaceObjectSampler<int[]>
 Returns:
 a random combination.

withUniformRandomProvider
public 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. Specified by:
withUniformRandomProvider
in interfaceSharedStateSampler<SharedStateObjectSampler<int[]>>
 Parameters:
rng
 Generator of uniformly distributed random numbers. Returns:
 the sampler
 Since:
 1.3

