| |
| Apache Commons RNG 1.6 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.6 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| New features, updates and bug fixes (requires Java 8). |
| |
| Apache Commons RNG 1.6 contains the following library modules: |
| commons-rng-client-api (requires Java 8) |
| commons-rng-core (requires Java 8) |
| commons-rng-simple (requires Java 8) |
| commons-rng-sampling (requires Java 8) |
| commons-rng-bom |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications; generators should be created using |
| the 'commons-rng-simple' module. |
| |
| Additional code is provided in the following modules: |
| commons-rng-examples-quadrature (requires Java 8) |
| commons-rng-examples-jmh (requires Java 8) |
| commons-rng-examples-sampling (requires Java 8) |
| commons-rng-examples-stress (requires Java 8) |
| commons-rng-examples-jpms (requires Java 11) |
| |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| It must be noted that, due to the nature of random number generation, some unit tests |
| are bound to fail with some probability. The 'maven-surefire-plugin' is configured |
| to re-run tests that fail, and pass the build if they succeed within the allotted |
| number of reruns (the test will be marked as 'flaky' in the report). |
| |
| The source output type (int/long) of a RNG must maintain behavioural compatibility |
| between releases; derived types may break behavioural compatibility. Any functional |
| changes will be recorded in the release notes. |
| |
| Changes in this version include: |
| |
| New features: |
| o RNG-186: Correct the module OSGi exports. Use of multiple modules is validated in an OSGi |
| integration test. |
| o RNG-184: New "ArraySampler" to support shuffling primitive and generic arrays with |
| sub-range support. |
| |
| |
| Changes: |
| o 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(). |
| |
| |
| 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/ |
| |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.5 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.5 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| This is a minor release of Apache Commons RNG, containing a |
| few new features and performance improvements. |
| |
| Apache Commons RNG 1.5 contains the following library modules: |
| commons-rng-client-api (requires Java 8) |
| commons-rng-core (requires Java 8) |
| commons-rng-simple (requires Java 8) |
| commons-rng-sampling (requires Java 8) |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications as a future release might make use of |
| the JPMS modularization feature available in Java 11+. |
| |
| Additional code is provided in the following modules: |
| commons-rng-examples-quadrature (requires Java 8) |
| commons-rng-examples-jmh (requires Java 8) |
| commons-rng-examples-sampling (requires Java 8) |
| commons-rng-examples-stress (requires Java 8) |
| commons-rng-examples-jpms (requires Java 11) |
| |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| It must be noted that, due to the nature of random number generation, some unit tests |
| are bound to fail with some probability. The 'maven-surefire-plugin' is configured |
| to re-run tests that fail, and pass the build if they succeed within the allotted |
| number of reruns (the test will be marked as 'flaky' in the report). |
| |
| The source output type (int/long) of a RNG must maintain behavioural compatibility |
| between releases; derived types may break behavioural compatibility. Any functional |
| changes will be recorded in the release notes. |
| |
| 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. |
| |
| |
| 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/ |
| |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.4 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.4 |
| |
| The Apache Commons RNG project provides pure-Java implementation |
| of pseudo-random generators. |
| |
| This is a minor release of Apache Commons RNG, containing a |
| few new features and performance improvements. |
| |
| Apache Commons RNG 1.4 contains the following library modules: |
| commons-rng-client-api (requires Java 8) |
| commons-rng-core (requires Java 8) |
| commons-rng-simple (requires Java 8) |
| commons-rng-sampling (requires Java 8) |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications as a future release might make use of |
| the JPMS modularization feature available in Java 11+. |
| |
| Additional code is provided in the following modules: |
| commons-rng-examples-quadrature (requires Java 8) |
| commons-rng-examples-jmh (requires Java 8) |
| commons-rng-examples-sampling (requires Java 8) |
| commons-rng-examples-stress (requires Java 8) |
| commons-rng-examples-jpms (requires Java 11) |
| |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| It must be noted that, due to the nature of random number generation, some unit tests |
| are bound to fail with some probability. The 'maven-surefire-plugin' is configured |
| to re-run tests that fail, and pass the build if they succeed within the allotted |
| number of reruns (the test will be marked as 'flaky' in the report). |
| |
| Changes in this version include: |
| |
| New features: |
| o RNG-156: New "DirichletSampler" class to sample from a Dirichlet distribution. |
| o RNG-137: New "StableSampler" class to sample from a stable distribution. |
| o RNG-138: New "CompositeSamplers" class to sample from a weighted combination of samplers. |
| o RNG-140: New "LongSampler" interface for sampling a long. New "UniformLongSampler" to sample |
| from a range. |
| o RNG-151: New "ZigguratSampler" implementation of the modified "Ziggurat" algorithm for |
| Gaussian and exponential sampling. |
| o RNG-147: New "LevySampler" to sample from a Levy distribution. |
| o RNG-145: "ContinuousUniformSampler": Add optional support for an open interval: (lower, upper). |
| o RNG-143: "RandomSource": Add an instance create method. Deprecate the static create method. |
| o RNG-136: New "ObjectSampler<T>" and "SharedStateObjectSampler<T>" interfaces. |
| These interfaces are implemented by samplers returning an object. |
| This changes the functional compatibility of existing samplers that implement |
| SharedStatedSampler<R>: CollectionSampler<T>; CombinationSampler; |
| DiscreteProbabilityCollectionSampler<T>; PermutationSampler; and UnitSphereSampler. |
| The method signature of the SharedStateSampler<R> 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<R>. It can now be assigned to SharedStateObjectSampler<T> |
| which can be used to generate samples of type <T>. |
| Code that assigned to SharedStatedSampler<R> should be updated. |
| o RNG-135: New "TetrahedronSampler" to sample uniformly from a tetrahedron. |
| o RNG-134: New "BoxSampler" to sample uniformly from a box (or hyperrectangle). |
| o RNG-133: New "LineSampler" to sample uniformly on a line segment. |
| o RNG-131: New "TriangleSampler" to sample uniformly from a triangle. |
| o RNG-132: New "o.a.c.rng.sampling.shape" package for sampling coordinates from shapes. |
| o RNG-128: New "UnitBallSampler" to generate coordinates uniformly within an n-unit ball. |
| o RNG-126: "PoissonSamplerCache": Method to return a SharedStateDiscreteSampler. |
| o RNG-124: Add fixed increment versions of the PCG generators. |
| |
| Fixed Bugs: |
| o RNG-159: "ZigguratSampler.NormalizedGaussian": Corrected biased sampling within convex regions |
| at the edge of the ziggurat. |
| o RNG-146: "GaussianSampler": Prevent infinite mean and standard deviation. |
| o RNG-144: "AhrensDieterExponentialSampler": Avoid possible infinite loop during sampling if the |
| underlying UniformRandomProvider creates a zero for the uniform deviate. |
| o RNG-130: "UnitSphereSampler": Fix 1 dimension sampling to only return vectors containing 1 or -1. |
| |
| Changes: |
| o RNG-163: Update test suite to JUnit 5. |
| o Simplify assertions with simpler equivalent. Thanks to Arturo Bernal. |
| o RNG-162: Update the minimum Java version to 1.8. |
| o RNG-160: "ZigguratSampler.NormalizedGaussian": Performance improvement by extracting ziggurat |
| edge sampling to a separate method. |
| o RNG-157: "UnitSphereSampler": Deprecate public constructor. Use the factory constructor to create |
| an optimal sampler. |
| o RNG-155: "ZigguratNormalizedGaussianSampler": Update to a table size of 256. |
| o RNG-152: Update samplers to use ZigguratSampler.NormalizedGaussian for Gaussian deviates. |
| o RNG-154: Update Gaussian samplers to avoid infinity in the tails of the distribution. Applies |
| to: ZigguratNormalisedGaussianSampler; BoxMullerNormalizedGaussianSampler; and |
| BoxMullerGaussianSampler. |
| o RNG-153: "UnitBallSampler": Update to use the ZigguratSampler for an exponential deviate for |
| ball point picking. |
| o RNG-150: Update "LargeMeanPoissonSampler" and "GeometricSampler" to use the ZigguratSampler for |
| exponential deviates. |
| o RNG-129: "UnitSphereSampler": Improve performance with specialisations for low order dimensions. |
| Added a factory constructor to create the sampler. |
| |
| |
| 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/ |
| |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.3 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.3 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| This is a minor release of Apache Commons RNG, containing a |
| few new features and performance improvements. |
| |
| Apache Commons RNG 1.3 contains the following library modules: |
| commons-rng-client-api (requires Java 6) |
| commons-rng-core (requires Java 6) |
| commons-rng-simple (requires Java 6) |
| commons-rng-sampling (requires Java 6) |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications as a future release might make use of |
| the JPMS modularization feature available in Java 9+. |
| |
| Additional code is provided in the following module: |
| commons-rng-examples (requires Java 9) |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| We would like to also note that unit tests in module 'commons-rng-sampling' |
| are bound to fail with some probability; this is expected due to the nature |
| of random number generation. The 'maven-surefire-plugin' can be configured |
| to re-run tests that fail and pass the build if they succeed (the test will |
| be marked as 'flaky' in the report). |
| |
| 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. |
| |
| |
| 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/ |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.2 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.2 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| This is a minor release of Apache Commons RNG, containing a |
| few new features and performance improvements. |
| |
| Apache Commons RNG 1.2 contains the following library modules: |
| commons-rng-client-api (requires Java 6) |
| commons-rng-core (requires Java 6) |
| commons-rng-simple (requires Java 6) |
| commons-rng-sampling (requires Java 6) |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications as a future release might make use of |
| the JPMS modularization feature available in Java 9+. |
| |
| Additional code is provided in the following module: |
| commons-rng-examples (requires Java 9) |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| We would like to also note that unit tests in module 'commons-rng-sampling' |
| are bound to fail with some probability; this is expected due to the nature |
| of random number generation. The 'maven-surefire-plugin' can be configured |
| to re-run tests that fail and pass the build if they succeed (the test will |
| be marked as 'flaky' in the report). |
| |
| Changes in this version include: |
| |
| New features: |
| o RNG-62: New "CombinationSampler" class. Thanks to Alex D. Herbert. |
| |
| Fixed Bugs: |
| o RNG-59: Use JDK's "SecureRandom" to seed the "SeedFactory". |
| o RNG-56: "ZigguratNormalizedGaussianSampler": Missing statements in least used branch. |
| o RNG-55: "UnitSphereSampler": Prevent returning NaN components and forbid |
| negative dimension. Thanks to Alex D. Herbert. |
| |
| Changes: |
| o RNG-63: "NumberFactory": Some methods have become obsolete following RNG-57. |
| o RNG-64: "PermutationSampler" and "CombinationSampler" shared code moved to a utility class. |
| Thanks to Alex D. Herbert. |
| o RNG-61: "PermutationSampler": Performance improvement. Thanks to Alex D. Herbert. |
| o RNG-57: Cache for using up all the bits provided by the underlying source of randomness. |
| Thanks to Alex D. Herbert. |
| o RNG-60: Use random seeds for unit testing. |
| o RNG-52: Set conservative upper bound in "LargePoissonSampler" to avoid truncation. |
| o RNG-58: Allow part of RNG state to be contained in base classes, e.g. to enable |
| caching in common code (see RNG-57). |
| o RNG-51: "PoissonSampler": Performance improvement. Thanks to Alex D. Herbert. |
| |
| |
| 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/ |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.1 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.1 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| This is a minor release of Apache Commons RNG, containing a |
| few new features and performance improvements. |
| |
| Apache Commons RNG 1.1 contains the following library modules: |
| commons-rng-client-api (requires Java 6) |
| commons-rng-core (requires Java 6) |
| commons-rng-simple (requires Java 6) |
| commons-rng-sampling (requires Java 6) |
| |
| The code in module 'commons-rng-core' should not be accessed |
| directly by applications as a future release might make use of |
| the JPMS modularization feature available in Java 9+. |
| |
| Additional code is provided in the following module: |
| commons-rng-examples (requires Java 9) |
| It is however not part of the official API and no compatibility |
| should be expected in subsequent releases. |
| |
| We would like to also note that unit tests in module 'commons-rng-sampling' |
| are bound to fail with some probability; this is expected due to the nature |
| of random number generation. The 'maven-surefire-plugin' can be configured |
| to re-run tests that fail and pass the build if they succeed (the test will |
| be marked as 'flaky' in the report). |
| |
| Changes in this version include: |
| |
| New features: |
| o RNG-37: Implementation of the "Ziggurat" algorithm for Gaussian sampling. |
| o RNG-47: "DiscreteProbabilityCollectionSampler": Sampling from a collection of items |
| with user-defined probabilities (feature ported from "Commons Math"). |
| o RNG-43: "LogNormalSampler" with user-defined underlying "NormalizedGaussianSampler". |
| o RNG-39: "UnitSphereSampler": generate random vectors isotropically located |
| on the surface of a sphere (feature ported from "Commons Math"). |
| o 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). |
| o RNG-35: New generic "GaussianSampler" based on "NormalizedGaussianSampler" |
| marker interface. |
| Implementation of "BoxMullerNormalizedGaussianSampler" deprecates |
| "BoxMullerGaussianSampler". |
| |
| Fixed Bugs: |
| o 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. |
| |
| Changes: |
| o RNG-50: "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.Thanks to Alex D. Herbert. |
| o RNG-42: Use "ZigguratNormalizedGaussianSampler" within the library. |
| o RNG-46: Following RNG-43, "BoxMullerLogNormalSampler" has been deprecated. |
| Furthermore, its base class has been removed; although it is a binary |
| incompatibility, it cannot cause any problem that were not already |
| present in code using v1.0 of the library: Calls to the base class |
| would have raised a NPE. |
| |
| |
| 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/ |
| |
| ============================================================================= |
| |
| Apache Commons RNG 1.0 RELEASE NOTES |
| |
| The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.0 |
| |
| The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators. |
| |
| This is the first release of Apache Commons RNG. |
| Apache Commons RNG 1.0 contains the following modules: |
| commons-rng-client-api (requires Java 6) |
| commons-rng-core (requires Java 6) |
| commons-rng-simple (requires Java 6) |
| commons-rng-sampling (requires Java 6) |
| commons-rng-jmh (requires Java 6) |
| commons-rng-examples (requires Java 7) |
| |
| No changes defined in this version. |
| |
| 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/ |