<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.

To generate the file RELEASE-NOTES.txt from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version]

The <action> type attribute can be add,update,fix,remove.
-->

<!-- NOTE:
The description attribute entries below are specially formatted
so as to improve the layout of the generated text release notes.

The parsing process removes all line feeds, replacing them with a single space.
The Velocity template in src/changes/release-notes.vm has been enhanced to replace pairs of adjacent spaces
with a new-line in the release notes. (These spaces are ignored when displaying HTML).
If the output is not quite correct, check for invisible trailing spaces!
-->

<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons RNG Release Notes</title>
  </properties>
  <body>

    <release version="1.6" date="TBD" description="
New features, updates and bug fixes (requires Java 8).
">
      <action dev="aherbert" type="add" issue="RNG-184">
        New "ArraySampler" to support shuffling primitive and generic arrays with
        sub-range support.
      </action>
      <action dev="aherbert" type="update" issue="RNG-183">
        "InverseTransformParetoSampler": Modified to concentrate samples at the distribution
        lower/upper bounds for extreme shape parameters. Eliminates generation of outlier
        infinite samples and NaN samples under certain conditions. Changes sampling to use
        the RNG nextLong() method in-place of nextDouble().
      </action>
</release>

    <release version="1.5" date="2022-09-10" description="
New features, updates and bug fixes. Adds a commons-rng-bom module. Requires Java 8.
">
      <action dev="aherbert" type="add" issue="RNG-182">
        Add a Bill of Materials (BOM) to aid in dependency management when referencing multiple
        Apache Commons RNG artifacts. The BOM should be used to ensure all imported artifacts are
        compatible.
      </action>
      <action dev="aherbert" type="add" issue="RNG-181">
        LXM family to support SplittableUniformRandomProvider. This allows creating a parallel
        stream of generators which will avoid sequence correlations between instances.
      </action>
      <action dev="aherbert" type="add" issue="RNG-180">
        New "SplittableUniformRandomProvider" interface to allow splitting a RNG into two
        objects, each of which implements the same interface (and can be recursively split
        indefinitely). Add default methods to support parallel stream implementations
        of the UniformRandomProvider stream methods.
      </action>
      <action dev="aherbert" type="add" issue="RNG-179">
        "FastLoadedDiceRollerDiscreteSampler": Distribution sampler that uses the
        Fast Loaded Dice Roller (FLDR) algorithm for exact sampling from a discrete
        probability distribution.
      </action>
      <action dev="aherbert" type="add" issue="RNG-178">
        "JumpableUniformRandomProvider": Add support to generate Java 8 streams of new
        random generator instances using the jump method.
      </action>
      <action dev="aherbert" type="add" issue="RNG-176">
        "UniformRandomProvider": Enhance the interface with default methods. Add range sample
        methods with a lower and upper bound. Add support to generate Java 8 streams of sample
        values. Note: This moves some method implementations from the core module to the
        client-api module. Binary compatibility is supported if the versions of these modules are
        matched. Users of the simple module should ensure the client-api and core modules are
        resolved as matched versions and not mismatched by transitive dependency resolution.
      </action>
      <action dev="aherbert" type="add" issue="RNG-177">
        "sampling": Add samples() method to the API to generate Java 8 streams of sample values.
      </action>
      <action dev="aherbert" type="add" issue="RNG-168">
        New LXM family of random generators. Added implementations of the LXM generators
        included in JDK 17.
      </action>
      <action dev="aherbert" type="add" issue="RNG-174">
        "RandomSource": Improve support for non-zero seeds. Seeding has been changed to specify
        a sub-range of the seed that must not be all zero. Introduces a functional change where
        byte[] seeds generated by RandomSource with a fixed UniformRandomProvider may be
        different. Seeds are now reproducible across calls using an input random source in an
        identical state.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-175">
        "RandomSource.MSWS": createSeed(UniformRandomProvider) to handle a bad RNG.
        This fixes an infinite loop when the RNG output is not suitably random to create a seed.
      </action>
      <action dev="aherbert" type="add" issue="RNG-173">
        "BaseProvider": Add a static method to extend input int[] and long[] seeds to a
        minimum length.
      </action>
      <action dev="aherbert" type="update" issue="RNG-171">
        Reduce the memory footprint of the cached boolean and int source for the IntProvider
        and LongProvider. This change has a performance improvement on some JDKs.
        Note: This introduces a functional compatibility change to the output from the
        nextInt method of any LongProvider; the output is now little-endian as
        each long is returned as the low 32-bits then the high 32-bits.
        The bit output from nextBoolean is unchanged (little-endian order).
      </action>
      <action dev="aherbert" type="update" issue="RNG-172">
        "UniformLongSampler": Precompute rejection threshold for a non-power of 2 range.
      </action>
      <action dev="aherbert" type="update" issue="RNG-169">
        "RandomSource.create": Update array seed conversion to use optimum seed length.
        Avoid duplication of input bytes and conversion of bytes that will be discarded.
        This introduces a behavioural change for int[], long[], and int seed conversions.
        Any fixed seeds used in previous versions in byte[], long or the native seed type
        will create the same RNG state. All array-to-array seed conversions now use little
        endian format, matching the byte[] conversion behaviour since 1.0. All seed
        conversions that expand the seed size use the same generation method to provide
        additional bytes. Conversion of int[] to long avoids loss of bits
        changing the possible output seeds from 2^32 to 2^64.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-170">
        Update implementations of "UniformRandomProvider.nextBytes" with a range
        [start, start + length) to be consistent with the exception conditions of the
        JDK array range checks.
      </action>
      <action dev="aherbert" type="add" issue="RNG-167">
        New "TSampler" class to sample from Student's t-distribution.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-166">
        Update "LogNormalSampler" and "BoxMullerLogNormalSampler" to allow a negative mean for
        the natural logarithm of the distribution values.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-165">
        "RejectionInversionZipfSampler": Allow a zero exponent in the Zipf sampler.
      </action>
      <action dev="aherbert" type="update" issue="RNG-160">
        "ZigguratSampler": Performance improvement using ternary operator to sort values.
      </action>
</release>

    <release version="1.4" date="2021-09-13" description="
New features, updates and bug fixes. Updates the minimum Java version to 8.
">
      <action dev="aherbert" type="update" issue="RNG-163">
        Update test suite to JUnit 5.
      </action>
      <action dev="aherbert" due-to="Arturo Bernal" type="update">
        Simplify assertions with simpler equivalent.
      </action>
      <action dev="aherbert" type="update" issue="RNG-162">
        Update the minimum Java version to 1.8.
      </action>
      <action dev="aherbert" type="update" issue="RNG-160">
        "ZigguratSampler.NormalizedGaussian": Performance improvement by extracting ziggurat
        edge sampling to a separate method.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-159">
        "ZigguratSampler.NormalizedGaussian": Corrected biased sampling within convex regions
        at the edge of the ziggurat.
      </action>
      <action dev="aherbert" type="add" issue="RNG-156">
        New "DirichletSampler" class to sample from a Dirichlet distribution.
      </action>
      <action dev="aherbert" type="update" issue="RNG-157">
        "UnitSphereSampler": Deprecate public constructor. Use the factory constructor to create
        an optimal sampler.
      </action>
      <action dev="aherbert" type="add" issue="RNG-137">
        New "StableSampler" class to sample from a stable distribution.
      </action>
      <action dev="aherbert" type="add" issue="RNG-138">
        New "CompositeSamplers" class to sample from a weighted combination of samplers.
      </action>
      <action dev="aherbert" type="add" issue="RNG-140">
        New "LongSampler" interface for sampling a long. New "UniformLongSampler" to sample
        from a range.
      </action>
      <action dev="aherbert" type="update" issue="RNG-155">
        "ZigguratNormalizedGaussianSampler": Update to a table size of 256.
      </action>
      <action dev="aherbert" type="update" issue="RNG-152">
        Update samplers to use ZigguratSampler.NormalizedGaussian for Gaussian deviates.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-146">
        "GaussianSampler": Prevent infinite mean and standard deviation.
      </action>
      <action dev="aherbert" type="update" issue="RNG-154">
        Update Gaussian samplers to avoid infinity in the tails of the distribution. Applies
        to: ZigguratNormalisedGaussianSampler; BoxMullerNormalizedGaussianSampler; and
        BoxMullerGaussianSampler.
      </action>
      <action dev="aherbert" type="update" issue="RNG-153">
        "UnitBallSampler": Update to use the ZigguratSampler for an exponential deviate for
        ball point picking.
      </action>
      <action dev="aherbert" type="update" issue="RNG-150">
        Update "LargeMeanPoissonSampler" and "GeometricSampler" to use the ZigguratSampler for
        exponential deviates.
      </action>
      <action dev="aherbert" type="add" issue="RNG-151">
         New "ZigguratSampler" implementation of the modified "Ziggurat" algorithm for
         Gaussian and exponential sampling.
      </action>
      <action dev="aherbert" type="add" issue="RNG-147">
         New "LevySampler" to sample from a Levy distribution.
      </action>
      <action dev="aherbert" type="add" issue="RNG-145">
        "ContinuousUniformSampler": Add optional support for an open interval: (lower, upper).
      </action>
      <action dev="aherbert" type="fix" issue="RNG-144">
        "AhrensDieterExponentialSampler": Avoid possible infinite loop during sampling if the
        underlying UniformRandomProvider creates a zero for the uniform deviate.
      </action>
      <action dev="aherbert" type="add" issue="RNG-143">
        "RandomSource": Add an instance create method. Deprecate the static create method.
      </action>
      <action dev="aherbert" type="add" issue="RNG-136">
        New "ObjectSampler&lt;T&gt;" and "SharedStateObjectSampler&lt;T&gt;" interfaces.
        These interfaces are implemented by samplers returning an object.
        This changes the functional compatibility of existing samplers that implement
        SharedStatedSampler&lt;R&gt;: CollectionSampler&lt;T&gt;; CombinationSampler;
        DiscreteProbabilityCollectionSampler&lt;T&gt;; PermutationSampler; and UnitSphereSampler.
        The method signature of the SharedStateSampler&lt;R&gt; interface remains
        'public R withUniformRandomProvider(UniformRandomProvider)'. The result can still be
        assigned to an instance of the same class R; it can no longer be assigned to an instance of
        SharedStatedSampler&lt;R&gt;. It can now be assigned to SharedStateObjectSampler&lt;T&gt;
        which can be used to generate samples of type &lt;T&gt;.
        Code that assigned to SharedStatedSampler&lt;R&gt; should be updated.
      </action>
      <action dev="aherbert" type="add" issue="RNG-135">
        New "TetrahedronSampler" to sample uniformly from a tetrahedron.
      </action>
      <action dev="aherbert" type="add" issue="RNG-134">
        New "BoxSampler" to sample uniformly from a box (or hyperrectangle).
      </action>
      <action dev="aherbert" type="add" issue="RNG-133">
        New "LineSampler" to sample uniformly on a line segment.
      </action>
      <action dev="aherbert" type="add" issue="RNG-131">
        New "TriangleSampler" to sample uniformly from a triangle.
      </action>
      <action dev="aherbert" type="add" issue="RNG-132">
        New "o.a.c.rng.sampling.shape" package for sampling coordinates from shapes.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-130">
        "UnitSphereSampler": Fix 1 dimension sampling to only return vectors containing 1 or -1.
      </action>
      <action dev="aherbert" type="update" issue="RNG-129">
        "UnitSphereSampler": Improve performance with specialisations for low order dimensions.
        Added a factory constructor to create the sampler.
      </action>
      <action dev="aherbert" type="add" issue="RNG-128">
        New "UnitBallSampler" to generate coordinates uniformly within an n-unit ball.
      </action>
      <action dev="aherbert" type="add" issue="RNG-126">
        "PoissonSamplerCache": Method to return a SharedStateDiscreteSampler.
      </action>
      <action dev="aherbert" type="add" issue="RNG-124">
        Add fixed increment versions of the PCG generators.
      </action>
    </release>

    <release version="1.3" date="2019-11-08" description="
New features, updates and bug fixes (requires Java 6).
">
      <action dev="aherbert" type="update" issue="RNG-122">
        "SeedFactory": Use XoRoShiRo1024PlusPlus as the default source of randomness.
      </action>
      <action dev="aherbert" type="update" issue="RNG-121">
        "ChengBetaSampler": Algorithms for different distribution parameters have
        been delegated to specialised classes.
      </action>
      <action dev="aherbert" type="update" issue="RNG-120">
        Update security of serialization code for java.util.Random instances. Implement
        look-ahead deserialization or remove the use of ObjectInputStream.readObject().
      </action>
      <action dev="aherbert" type="update" issue="RNG-76">
        "SplitMix64": Added primitive long constructor.
      </action>
      <action dev="aherbert" type="add" issue="RNG-117">
        Additional "XorShiRo" family generators. This adds 4 PlusPlus general purpose variants
        of existing generators and 3 variants of a large state (1024-bit) generator.
      </action>
      <action dev="aherbert" type="update" issue="RNG-119">
        Add LongJumpable support to XoShiRo generators previously only supporting Jumpable.
      </action>
      <action dev="aherbert" type="add" issue="RNG-117">
        "RandomSource": Support creating a byte[] seed suitable for the implementing
        generator class.
      </action>
      <action dev="aherbert" type="add" issue="RNG-116">
        "RandomSource": Expose interfaces supported by the implementing generator class
        with methods isJumpable() and isLongJumpable().
      </action>
      <action dev="aherbert" type="add" issue="RNG-111">
        New "JenkinsSmallFast32" and "JenkinsSmallFast64" generators.
      </action>
      <action dev="aherbert" type="update" issue="RNG-114">
        "ListSampler": Select the shuffle algorithm based on the list type. This improves
        performance for non-RandomAccess lists such as LinkedList.
      </action>
      <action dev="aherbert" type="add" issue="RNG-19">
        "JDKRandomWrapper": Wraps an instance of java.util.Random for use as a
        UniformRandomProvider. Can wrap a SecureRandom to use functionality
        provided by the JDK for cryptographic random numbers and platform dependent
        features such as reading /dev/urandom on Linux.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-115">
        "JDKRandom": Fixed the restore state method to function when the instance has not
        previously been used to save state.
      </action>
      <action dev="aherbert" type="add" issue="RNG-112">
        New "DotyHumphreySmallFastCounting32" and "DotyHumphreySmallFastCounting64" generators.
      </action>
      <action dev="aherbert" type="update" issue="RNG-109">
        "DiscreteProbabilityCollectionSampler": Use a faster enumerated probability
        distribution sampler to replace the binary search algorithm.
      </action>
      <action dev="aherbert" type="add" issue="RNG-85">
        New "MiddleSquareWeylSequence" generator.
      </action>
      <action dev="aherbert" type="update" issue="RNG-90">
        "BaseProvider": Updated to use faster algorithm for nextInt(int).
      </action>
      <action dev="aherbert" type="update" issue="RNG-95">
        "DiscreteUniformSampler": Updated to use faster algorithms for generation of ranges.
      </action>
      <action dev="aherbert" type="add" issue="RNG-110">
        Factory methods for Discrete and Continuous distribution samplers. The factory method
        can choose the optimal implementation for the distribution parameters.
      </action>
      <action dev="aherbert" type="add" issue="RNG-84" due-to="Abhishek Singh Dhadwal">
        New Permuted Congruential Generators (PCG) from the PCG family.
        Added the LCG and MCG 32 bit output versions of the XSH-RS and XSH-RR operations,
        along with the 64 bit RXS-M-XS edition.
      </action>
      <action dev="aherbert" type="add" issue="RNG-102">
        New "SharedStateSampler" interface to allow a sampler to create a new instance with
        a new source of randomness. Any pre-computed state can be shared between the samplers.
      </action>
      <action dev="aherbert" type="add" issue="RNG-108">
        Update "SeedFactory" to improve performance.
      </action>
      <action dev="aherbert" type="add" issue="RNG-99">
        New "AliasMethodDiscreteSampler" that can sample from any discrete distribution defined
        by an array of probabilities. Set-up is O(n) time and sampling is O(1) time.
      </action>
      <action dev="aherbert" type="add" issue="RNG-100">
        New "GuideTableDiscreteSampler" that can sample from any discrete distribution defined
        by an array of probabilities.
      </action>
      <action dev="aherbert" type="update" issue="RNG-106">
        Ensure SeedFactory produces non-zero seed arrays. This avoids invalid seeding of
        generators that cannot recover from a seed of zeros.
      </action>
      <action dev="aherbert" type="add" issue="RNG-98">
        New "LongJumpableUniformRandomProvider" interface extends JumpableUniformRandomProvider
        with a long jump method.
      </action>
      <action dev="aherbert" type="add" issue="RNG-97">
        New "JumpableUniformRandomProvider" interface provides a jump method that advances
        the generator a large number of steps of the output sequence in a single operation. A
        copy is returned allowing repeat invocations to create a series of generators
        for use in parallel computations.
      </action>
      <action dev="aherbert" type="update" issue="RNG-103">
        "LargeMeanPoissonSampler: Switch from SmallMeanPoissonSampler to use
        KempSmallMeanPoissonSampler for the fractional mean sample.
      </action>
      <action dev="aherbert" type="update" issue="RNG-75">
        "RandomSource.create(...)": Refactor internal components to allow custom seeding routines
        per random source. Improvements were made to the speed of creating generators with small
        seeds.
      </action>
      <action dev="aherbert" type="update" issue="RNG-77">
        "NumberFactory": Improve performance of int and long array to/from byte array
        conversions.
      </action>
      <action dev="aherbert" type="add" issue="RNG-101">
        New "MarsagliaTsangWangDiscreteSampler" that provides samples from a discrete
        distribution stored as a look-up table using a single random integer deviate. Computes
        tables for the Poisson or Binomial distributions, and generically any provided discrete
        probability distribution.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-96">
        "AhrensDieterMarsagliaTsangGammaSampler": Fix parameter interpretation so that alpha
        is a 'shape' parameter and theta is a 'scale' parameter. This reverses the functionality
        of the constructor parameters from previous versions. Dependent code should be checked
        and parameters reversed to ensure existing functionality is maintained.
      </action>
      <action dev="aherbert" type="add" issue="RNG-91">
        New "KempSmallMeanPoissonSampler" that provides Poisson samples using only 1 random
        deviate per sample. This algorithm outperforms the SmallMeanPoissonSampler
        when the generator is slow.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-93">
        "SmallMeanPoissonSampler": Requires the Poisson probability for p(x=0) to be positive
        setting an upper bound on the mean of approximately 744.44.
      </action>
      <action dev="aherbert" type="fix" issue="RNG-92">
        "LargeMeanPoissonSampler": Requires mean >= 1.
      </action>
      <action dev="aherbert" type="add" issue="RNG-70">
        New "XorShiRo" family of generators. This adds 6 new general purpose generators with
        different periods and 4 related generators with improved performance for floating-point
        generation.
      </action>
      <action dev="aherbert" type="update" issue="RNG-88">
        Update the generation performance JMH benchmarks to have a reference baseline.
      </action>
      <action dev="aherbert" type="update" issue="RNG-87">
        "MultiplyWithCarry256": Performance improvement by advancing state one step per sample.
      </action>
      <action dev="aherbert" type="add" issue="RNG-82">
        New "XorShift1024StarPhi" generator. This is a modified implementation of
        XorShift1024Star that improves randomness of the output sequence. The XOR_SHIFT_1024_S
        enum has been marked deprecated as a note to users to switch to the new
        XOR_SHIFT_1024_S_PHI version.
      </action>
      <action dev="aherbert" type="add" issue="RNG-78">
        New "ThreadLocalRandomSource" class provides thread safe access to random generators.
      </action>
      <action dev="aherbert" type="update" issue="RNG-81">
        "NumberFactory": Evenly sample all dyadic rationals between 0 and 1.
      </action>
      <action dev="aherbert" type="add" issue="RNG-79">
        Benchmark methods for producing nextDouble and nextFloat.
      </action>
      <action dev="aherbert" type="update" issue="RNG-73">
        Add the methods used from UniformRandomProvider to each sampler in the sampling module.
      </action>
      <action dev="aherbert" type="update" issue="RNG-74">
        "DiscreteUniformSampler": Algorithms for small and large integer ranges have
        been delegated to specialised classes.
      </action>
      <action dev="aherbert" type="add" issue="RNG-72">
        Add new JMH benchmark ConstructionPerformance.
      </action>
      <action dev="aherbert" type="add" issue="RNG-71">
        Validate parameters for the distribution samplers.
      </action>
      <action dev="aherbert" type="update" issue="RNG-68">
        "AhrensDieterMarsagliaTsangGammaSampler": Algorithms for small and large theta have
        been delegated to specialised classes.
      </action>
      <action dev="aherbert" type="add" issue="RNG-67">
        Instructions for how to build and run the examples-stress code.
      </action>
      <action dev="aherbert" type="add" issue="RNG-69">
        New "GeometricSampler" class.
      </action>
    </release>

    <release version="1.2" date="2018-12-12" description="
New features, updates and bug fixes (requires Java 6).
">
      <action dev="erans" type="update" issue="RNG-63">
        "NumberFactory": Some methods have become obsolete following RNG-57.
      </action>
      <action dev="erans" type="update" issue="RNG-64" due-to="Alex D. Herbert">
        "PermutationSampler" and "CombinationSampler" shared code moved to a utility class.
      </action>
      <action dev="erans" type="add" issue="RNG-62" due-to="Alex D. Herbert">
        New "CombinationSampler" class.
      </action>
      <action dev="erans" type="update" issue="RNG-61" due-to="Alex D. Herbert">
        "PermutationSampler": Performance improvement.
      </action>
      <action dev="erans" type="update" issue="RNG-57" due-to="Alex D. Herbert">
        Cache for using up all the bits provided by the underlying source of randomness.
      </action>
      <action dev="erans" type="update" issue="RNG-60">
        Use random seeds for unit testing.
      </action>
      <action dev="erans" type="update" issue="RNG-52">
        Set conservative upper bound in "LargePoissonSampler" to avoid truncation.
      </action>
      <action dev="erans" type="fix" issue="RNG-59">
        Use JDK's "SecureRandom" to seed the "SeedFactory".
      </action>
      <action dev="erans" type="update" issue="RNG-58">
        Allow part of RNG state to be contained in base classes, e.g. to enable
        caching in common code (see RNG-57).
      </action>
      <action dev="erans" type="update" issue="RNG-51" due-to="Alex D. Herbert">
        "PoissonSampler": Performance improvement.
      </action>
      <action dev="erans" type="fix" issue="RNG-56">
        "ZigguratNormalizedGaussianSampler": Missing statements in least used branch.
      </action>
      <action dev="erans" type="fix" issue="RNG-55" due-to="Alex D. Herbert">
        "UnitSphereSampler": Prevent returning NaN components and forbid
        negative dimension.
      </action>
    </release>

    <release version="1.1" date="2018-08-14" description="
New features, updates and bug fixes (requires Java 6).
">
      <action dev="erans" type="fix" issue="RNG-53">
        Class "SamplerBase" has been deprecated.  It was meant for internal use
        only but, through inheritance, it allows incorrect usage of the sampler
        classes.
      </action>
      <action dev="erans" type="update" issue="RNG-50" due-to="Alex D. Herbert">
        "PoissonSampler": Algorithms for small mean and large mean have
        been separated into dedicated classes.  Cache precomputation has
        been disabled as it is only marginally used and is a performance
        hit for small sampling sets.
      </action>
      <action dev="erans" type="add" issue="RNG-37">
        Implementation of the "Ziggurat" algorithm for Gaussian sampling.
      </action>
      <action dev="erans" type="update" issue="RNG-42">
        Use "ZigguratNormalizedGaussianSampler" within the library.
      </action>
      <action dev="erans" type="add" issue="RNG-47">
        "DiscreteProbabilityCollectionSampler": Sampling from a collection of items
        with user-defined probabilities (feature ported from "Commons Math").
      </action>
      <action dev="erans" type="add" issue="RNG-43">
        "LogNormalSampler" with user-defined underlying "NormalizedGaussianSampler".
      </action>
      <action dev="erans" type="update" issue="RNG-46">
        Following RNG-43, "BoxMullerLogNormalSampler" has been deprecated.
      </action>
      <action dev="erans" type="add" issue="RNG-39">
        "UnitSphereSampler": generate random vectors isotropically located
        on the surface of a sphere (feature ported from "Commons Math").
      </action>
      <action dev="erans" type="add" issue="RNG-36">
        "MarsagliaNormalizedGaussianSampler": Faster variation of the
        Box-Muller algorithm.
        This version is used within "AhrensDieterMarsagliaTsangGammaSampler"
        "MarsagliaLogNormalSampler" and "PoissonSampler" (generated sequences
        will thus differ from those generated by version 1.0 of the library).
      </action>
      <action dev="erans" type="add" issue="RNG-35">
        New generic "GaussianSampler" based on "NormalizedGaussianSampler"
        marker interface.
        Implementation of "BoxMullerNormalizedGaussianSampler" deprecates
        "BoxMullerGaussianSampler".
      </action>
    </release>

    <release version="1.0" date="2016-12-13" description="
This is the first release of Apache Commons RNG.

Contains the following modules:
  commons-rng-client-api;
  commons-rng-core;
  commons-rng-simple;
  commons-rng-sampling.

Requires Java 6.
">
    </release>


  </body>
</document>
