Package org.apache.commons.rng.sampling
Class PermutationSampler
- java.lang.Object
-
- org.apache.commons.rng.sampling.PermutationSampler
-
- All Implemented Interfaces:
ObjectSampler<int[]>
,SharedStateObjectSampler<int[]>
,SharedStateSampler<SharedStateObjectSampler<int[]>>
public class PermutationSampler extends Object implements SharedStateObjectSampler<int[]>
Class for representing permutations of a sequence of integers.Sampling uses
UniformRandomProvider.nextInt(int)
.This class also contains utilities for shuffling an
int[]
array in-place.
-
-
Constructor Summary
Constructors Constructor Description PermutationSampler(UniformRandomProvider rng, int n, int k)
Creates a generator of permutations.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static int[]
natural(int n)
Creates an array representing the natural numbern
.int[]
sample()
Create a sample.static void
shuffle(UniformRandomProvider rng, int[] list)
Shuffles the entries of the given array.static void
shuffle(UniformRandomProvider rng, int[] list, int start, boolean towardHead)
Shuffles the entries of the given array, using the Fisher-Yates algorithm.PermutationSampler
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
-
PermutationSampler
public PermutationSampler(UniformRandomProvider rng, int n, int k)
Creates a generator of permutations.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 permutation ofn
takenk
.- Parameters:
rng
- Generator of uniformly distributed random numbers.n
- Domain of the permutation.k
- Size of the permutation.- Throws:
IllegalArgumentException
- ifn <= 0
ork <= 0
ork > n
.
-
-
Method Detail
-
sample
public int[] sample()
Description copied from interface:ObjectSampler
Create a sample.- Specified by:
sample
in interfaceObjectSampler<int[]>
- Returns:
- a random permutation.
- See Also:
PermutationSampler(UniformRandomProvider,int,int)
-
withUniformRandomProvider
public PermutationSampler 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
-
shuffle
public static void shuffle(UniformRandomProvider rng, int[] list)
Shuffles the entries of the given array.- Parameters:
rng
- Random number generator.list
- Array whose entries will be shuffled (in-place).- See Also:
shuffle(UniformRandomProvider,int[],int,boolean)
-
shuffle
public static void shuffle(UniformRandomProvider rng, int[] list, int start, boolean towardHead)
Shuffles the entries of the given array, using the Fisher-Yates algorithm. Thestart
andtowardHead
parameters select which part of the array is randomized and which is left untouched.Sampling uses
UniformRandomProvider.nextInt(int)
.- Parameters:
rng
- Random number generator.list
- Array whose entries will be shuffled (in-place).start
- Index at which shuffling begins.towardHead
- Shuffling is performed for index positions betweenstart
and either the end (iffalse
) or the beginning (iftrue
) of the array.
-
natural
public static int[] natural(int n)
Creates an array representing the natural numbern
.- Parameters:
n
- Natural number.- Returns:
- an array whose entries are the numbers 0, 1, ...,
n
-1. Ifn == 0
, the returned array is empty.
-
-