Class LineSampler
java.lang.Object
org.apache.commons.rng.sampling.shape.LineSampler
- All Implemented Interfaces:
ObjectSampler<double[]>
,SharedStateObjectSampler<double[]>
,SharedStateSampler<SharedStateObjectSampler<double[]>>
- Direct Known Subclasses:
LineSampler.LineSampler1D
,LineSampler.LineSampler2D
,LineSampler.LineSampler3D
,LineSampler.LineSamplerND
Generate points uniformly distributed on a line.
Sampling uses:
- Since:
- 1.4
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
Sample uniformly from a line in 1D.private static final class
Sample uniformly from a line in 2D.private static final class
Sample uniformly from a line in 3D.private static final class
Sample uniformly from a line in ND. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
The dimension for 1D sampling.private final UniformRandomProvider
The source of randomness.private static final int
The dimension for 3D sampling.private static final int
The dimension for 2D sampling. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract double[]
createSample
(double p1mu, double u) Creates the sample given the random variateu
in the interval[0, 1]
.static LineSampler
of
(UniformRandomProvider rng, double[] a, double[] b) Create a line sampler with verticesa
andb
.double[]
sample()
Create an object sample.abstract LineSampler
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.commons.rng.sampling.ObjectSampler
samples, samples
-
Field Details
-
ONE_D
private static final int ONE_DThe dimension for 1D sampling.- See Also:
-
TWO_D
private static final int TWO_DThe dimension for 2D sampling.- See Also:
-
THREE_D
private static final int THREE_DThe dimension for 3D sampling.- See Also:
-
rng
The source of randomness.
-
-
Constructor Details
-
LineSampler
LineSampler(UniformRandomProvider rng) - Parameters:
rng
- Source of randomness.
-
-
Method Details
-
sample
public double[] sample()Description copied from interface:ObjectSampler
Create an object sample.- Specified by:
sample
in interfaceObjectSampler<double[]>
- Returns:
- a random Cartesian coordinate on the line.
-
createSample
protected abstract double[] createSample(double p1mu, double u) Creates the sample given the random variateu
in the interval[0, 1]
. The sum1 - u
is provided. The sample can be obtained from the line ab using:p = a(1 - u) + ub
- Parameters:
p1mu
- plus 1 minus u (1 - u)u
- the variate u- Returns:
- the sample
-
withUniformRandomProvider
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<double[]>>
- Parameters:
rng
- Generator of uniformly distributed random numbers.- Returns:
- the sampler
-
of
Create a line sampler with verticesa
andb
. Sampled points are uniformly distributed on the line segmentab
.Sampling is supported in dimensions of 1 or above.
- Parameters:
rng
- Source of randomness.a
- The first vertex.b
- The second vertex.- Returns:
- the sampler
- Throws:
IllegalArgumentException
- If the vertices do not have the same dimension; the dimension is less than 1; or vertices have non-finite coordinates.
-