-
Notifications
You must be signed in to change notification settings - Fork 40
/
RELEASE-NOTES.txt
570 lines (460 loc) · 30.2 KB
/
RELEASE-NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
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/