You are viewing a plain text version of this content. The canonical link for it is here.
Posted to announce@apache.org by Alex Herbert <ah...@apache.org> on 2019/11/11 17:22:21 UTC

[ANNOUNCEMENT] Apache Commons RNG Version 1.3 Released

The Apache Commons Team is pleased to announce the availability of
version 1.3 of "Apache Commons RNG".

Apache Commons RNG provides Java implementations of pseudo-random
numbers generators.

Note:
A behavioural compatibility change has been introduced by the fix for
RNG-96.

Changes in this version include:

New features:
o 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.
o RNG-117:  "RandomSource": Support creating a byte[] seed suitable for the
implementing generator class.
o RNG-116:  "RandomSource": Expose interfaces supported by the implementing
generator class with methods isJumpable() and isLongJumpable().
o RNG-111:  New "JenkinsSmallFast32" and "JenkinsSmallFast64" generators.
o 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.
o RNG-112:  New "DotyHumphreySmallFastCounting32" and
 "DotyHumphreySmallFastCounting64" generators.
o RNG-85:  New "MiddleSquareWeylSequence" generator.
o RNG-110:  Factory methods for Discrete and Continuous distribution
samplers.
The factory method can choose the optimal implementation for the
distribution
parameters.
o RNG-84:  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. Thanks to Abhishek Singh Dhadwal.
o 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.
o RNG-108:  Update "SeedFactory" to improve performance.
o 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.
o RNG-100:  New "GuideTableDiscreteSampler" that can sample from any
discrete
distribution defined by an array of probabilities.
o RNG-98:  New "LongJumpableUniformRandomProvider" interface extends
JumpableUniformRandomProvider with a long jump method.
o 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.
o 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.
o 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.
o 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.
o 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.
o RNG-78:  New "ThreadLocalRandomSource" class provides thread safe access
to
random generators.
o RNG-79:  Benchmark methods for producing nextDouble and nextFloat.
o RNG-72:  Add new JMH benchmark ConstructionPerformance.
o RNG-71:  Validate parameters for the distribution samplers.
o RNG-67:  Instructions for how to build and run the examples-stress code.
o RNG-69:  New "GeometricSampler" class.

Fixed Bugs:
o RNG-115:  "JDKRandom": Fixed the restore state method to function when the
instance has not previously been used to save state.
o 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.
o 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.
o RNG-92:  "LargeMeanPoissonSampler": Requires mean >= 1.

Changes:
o RNG-122:  "SeedFactory": Use XoRoShiRo1024PlusPlus as the default source
of
randomness.
o RNG-121:  "ChengBetaSampler": Algorithms for different distribution
parameters
have been delegated to specialised classes.
o RNG-120:  Update security of serialization code for java.util.Random
instances.
Implement look-ahead deserialization or remove the use of
ObjectInputStream.readObject().
o RNG-76:  "SplitMix64": Added primitive long constructor.
o RNG-119:  Add LongJumpable support to XoShiRo generators previously only
supporting Jumpable.
o RNG-114:  "ListSampler": Select the shuffle algorithm based on the list
type.
This improves performance for non-RandomAccess lists such as LinkedList.
o RNG-109:  "DiscreteProbabilityCollectionSampler": Use a faster enumerated
probability distribution sampler to replace the binary search algorithm.
o RNG-90:  "BaseProvider": Updated to use faster algorithm for nextInt(int).
o RNG-95:  "DiscreteUniformSampler": Updated to use faster algorithms for
generation of ranges.
o RNG-106:  Ensure SeedFactory produces non-zero seed arrays. This avoids
invalid seeding of generators that cannot recover from a seed of zeros.
o RNG-103:  "LargeMeanPoissonSampler: Switch from SmallMeanPoissonSampler to
use KempSmallMeanPoissonSampler for the fractional mean sample.
o 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.
o RNG-77:  "NumberFactory": Improve performance of int and long array
to/from
byte array conversions.
o RNG-88:  Update the generation performance JMH benchmarks to have a
reference
baseline.
o RNG-87:  "MultiplyWithCarry256": Performance improvement by advancing
state
one step per sample.
o RNG-81:  "NumberFactory": Evenly sample all dyadic rationals between 0
and 1.
o RNG-73:  Add the methods used from UniformRandomProvider to each sampler
in
the sampling module.
o RNG-74:  "DiscreteUniformSampler": Algorithms for small and large integer
ranges have been delegated to specialised classes.
o RNG-68:  "AhrensDieterMarsagliaTsangGammaSampler": Algorithms for small
and
large theta have been delegated to specialised classes.

Historical list of changes:
  https://commons.apache.org/proper/commons-rng/changes-report.html

For complete information on Apache Commons RNG, including instructions on
how
to submit bug reports, patches, or suggestions for improvement, see the
Apache Commons RNG website:
  https://commons.apache.org/proper/commons-rng/

Distribution packages can be downloaded from:
  https://commons.apache.org/proper/commons-rng/download_rng.cgi

When downloading, please verify signatures using the KEYS file
available at
  https://www.apache.org/dist/commons/KEYS

Maven artifacts are also available in the central Maven repository:
  http://repo.maven.apache.org/maven2/org/apache/commons/

----
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-rng-client-api</artifactId>
  <version>1.3</version>
----
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-rng-simple</artifactId>
  <version>1.3</version>
----
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-rng-sampling</artifactId>
  <version>1.3</version>
----

The Apache Commons Team