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

public abstract class LineSampler extends Object implements SharedStateObjectSampler<double[]>
Generate points uniformly distributed on a line.

Sampling uses:

Since:
1.4
  • Field Details

  • Constructor Details

  • Method Details

    • sample

      public double[] sample()
      Description copied from interface: ObjectSampler
      Create an object sample.
      Specified by:
      sample in interface ObjectSampler<double[]>
      Returns:
      a random Cartesian coordinate on the line.
    • createSample

      protected abstract double[] createSample(double p1mu, double u)
      Creates the sample given the random variate u in the interval [0, 1]. The sum 1 - 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

      public abstract LineSampler 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 interface SharedStateSampler<SharedStateObjectSampler<double[]>>
      Parameters:
      rng - Generator of uniformly distributed random numbers.
      Returns:
      the sampler
    • of

      public static LineSampler of(UniformRandomProvider rng, double[] a, double[] b)
      Create a line sampler with vertices a and b. Sampled points are uniformly distributed on the line segment ab.

      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.