public class PermutationSampler extends Object implements SharedStateObjectSampler<int[]>
Sampling uses UniformRandomProvider.nextInt(int)
.
This class also contains utilities for shuffling an int[]
array in-place.
Constructor and Description |
---|
PermutationSampler(UniformRandomProvider rng,
int n,
int k)
Creates a generator of permutations.
|
Modifier and Type | Method and Description |
---|---|
static int[] |
natural(int n)
Creates an array representing the natural number
n . |
int[] |
sample()
Create an object 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.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
samples, samples
public PermutationSampler(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 permutation of n
taken
k
.
rng
- Generator of uniformly distributed random numbers.n
- Domain of the permutation.k
- Size of the permutation.IllegalArgumentException
- if n <= 0
or k <= 0
or k > n
.public int[] sample()
ObjectSampler
sample
in interface ObjectSampler<int[]>
PermutationSampler(UniformRandomProvider,int,int)
public PermutationSampler withUniformRandomProvider(UniformRandomProvider rng)
withUniformRandomProvider
in interface SharedStateSampler<SharedStateObjectSampler<int[]>>
rng
- Generator of uniformly distributed random numbers.public static void shuffle(UniformRandomProvider rng, int[] list)
rng
- Random number generator.list
- Array whose entries will be shuffled (in-place).shuffle(UniformRandomProvider,int[],int,boolean)
public static void shuffle(UniformRandomProvider rng, int[] list, int start, boolean towardHead)
start
and towardHead
parameters select which part
of the array is randomized and which is left untouched.
Sampling uses UniformRandomProvider.nextInt(int)
.
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 between
start
and either the end (if false
) or the beginning
(if true
) of the array.public static int[] natural(int n)
n
.n
- Natural number.n
-1.
If n == 0
, the returned array is empty.Copyright © 2016–2022 The Apache Software Foundation. All rights reserved.