The Apache Commons Team is pleased to announce the availability of version 1.5 of "Apache Commons RNG".
Apache Commons RNG provides Java implementations of pseudo-random numbers generators. Changes in this version include: New features: o 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. o RNG-181: LXM family to support SplittableUniformRandomProvider. This allows creating a parallel stream of generators which will avoid sequence correlations between instances. o 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. o RNG-179: "FastLoadedDiceRollerDiscreteSampler": Distribution sampler that uses the Fast Loaded Dice Roller (FLDR) algorithm for exact sampling from a discrete probability distribution. o RNG-178: "JumpableUniformRandomProvider": Add support to generate Java 8 streams of new random generator instances using the jump method. o 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. o RNG-177: "sampling": Add samples() method to the API to generate Java 8 streams of sample values. o RNG-168: New LXM family of random generators. Added implementations of the LXM generators included in JDK 17. o 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. o RNG-173: "BaseProvider": Add a static method to extend input int[] and long[] seeds to a minimum length. o RNG-167: New "TSampler" class to sample from Student's t-distribution. Fixed Bugs: o 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. o 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. o RNG-166: Update "LogNormalSampler" and "BoxMullerLogNormalSampler" to allow a negative mean for the natural logarithm of the distribution values. o RNG-165: "RejectionInversionZipfSampler": Allow a zero exponent in the Zipf sampler. Changes: o 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). o RNG-172: "UniformLongSampler": Precompute rejection threshold for a non-power of 2 range. o 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. o RNG-160: "ZigguratSampler": Performance improvement using ternary operator to sort values. 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: https://repo.maven.apache.org/maven2/org/apache/commons/ ---- <groupId>org.apache.commons</groupId> <artifactId>commons-rng-client-api</artifactId> <version>1.5</version> ---- <groupId>org.apache.commons</groupId> <artifactId>commons-rng-simple</artifactId> <version>1.5</version> ---- <groupId>org.apache.commons</groupId> <artifactId>commons-rng-sampling</artifactId> <version>1.5</version> ---- The Apache Commons Team --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org