Class CombinationSampler
- java.lang.Object
-
- org.apache.commons.rng.sampling.CombinationSampler
-
public class CombinationSampler extends java.lang.ObjectClass 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
Modifier and Type Method Description int[]sample()Return a combination ofkwhose entries are selected randomly, without repetition, from the integers 0, 1, ...,n-1 (inclusive).
-
-
-
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 lengthkwhose entries are selected randomly, without repetition, from the integers 0, 1, ...,n-1 (inclusive). The returned array represents a combination ofntakenk.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 <= 0ork <= 0ork > nthen 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:
java.lang.IllegalArgumentException- ifn <= 0ork <= 0ork > n.
-
-
Method Detail
-
sample
public int[] sample()
Return a combination ofkwhose 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.
- Returns:
- a random combination.
-
-