Skip to content

Releases: schmouk/CppRandLib

Release v2.1.4 - 2026/01

01 Jan 15:26
40b1520

Choose a tag to compare

New in Release v2.1.4

Modified copyright dates (2026)

New in release v2.1.3 (remembering)

Thanks to great comments from Tomasz Działa, the author of the CWG algorithm (see ref. [8] - Collatz-Weyl Generators: High Quality and High Throughput Parameterized Pseudorandom Number Generators. Published at arXiv, December 2023):

  • an implementation error in Cwg128_64.next() method has been fixed, and
  • the values of the minimal periods of the three implemented versions of the algorithm have been fixed also.

Release v2.1.3 - 2025/12

06 Dec 07:11

Choose a tag to compare

New in release v2.1.3

Thanks to great comments from Tomasz Działa, the author of the CWG algorithm (see ref. [8] - Collatz-Weyl Generators: High Quality and High Throughput Parameterized Pseudorandom Number Generators. Published at arXiv, December 2023):

  • an implementation error in Cwg128_64.next() method has been fixed, and
  • the values of the minimal periods of the three implemented versions of the algorithm have been fixed also.

Release v2.1.2 - 2025/10

21 Oct 08:44
6ba5233

Choose a tag to compare

New in release v2.1.2

  • Added HTML documentation related to c++11 and c++20, generated by doxygen utility;
  • Added a banner image in README.md;
  • Enhanced and fixed content of README.md.

Release v2.1.1 - 2025/07

16 Jul 07:04
f8dc627

Choose a tag to compare

This is version 2.1.1 of library CppRandLib.

Sub-directory c++11 contains a c++11 implementation of the library;
Sub-directory c++20 contains a c++20 implementation of it.

Extract the sub-directory of your choice from CppRandLib into your project.
Classes and methods are documented in code with doxygen comments, as well in the README.md file.

What's new in release 2.1

Release 2.1 is an enhancement of release 2.0:

  • Tests on float values for the initialization of SplitMixXX instances have been fixed: value 1.0 is now accepted as it is a correct value;
  • Fixed also the same test of the initialization float value for all seed() methods;
  • Fixed a bug in method Pcg1024_32.next(): release 2.0 is not removed but should no more be used;
  • Augmented unitary tests on utils::UInt128;
  • Augmented unitary tests on every MELGxxx tests;
  • Fixed typos in doxygen comments in nearly all header files;
  • Added two documents references at end of file README.md.

What's new in release 2.1.1

  • Fixed erroneous namings in main documentation.

Release v2.0 - 2025/06

01 Jun 17:17
55a8f74

Choose a tag to compare

This is version 2.0 of library CppRandLib.
It is a double implementation of its pair version PyRandLib (Python implementation):

Sub-directory c++11 contains a c++11 implementation of the library;
Sub-directory c++20 contains a c++20 implementation of it.

Extract the sub-directory of your choice from CppRandLib into your project.
Classes and methods are documented in code with doxygen comments, as well in the README.md file.

CppRandLib 2.0 provides now the implementation of 9 pseudo random numbers generators, some of them very recent, and all (but LCG ones) being BICs ones (Best In Class) :

  • Collatz-Weyl Generator (2023)
    (CWG, 64 bits, 128 bits or 128/64 bits, 3 different values of periodicities, see reference [8] in README.md);
  • Linear Congruential Generator
    (LCG, or FastRand, 32 bits or 63 bits, 2 different values of periodicities, see reference [1]);
  • Lagged Fibonacci Generator (1985)
    (LFib, 64 bits, 4 different periodicities, see reference [4]);
  • Maximally Equidistributed Long-period Linear Generator (2018)
    (MELG, 64/32 bits, 3 different values of periodicities, see reference [11]);
  • Multiple Recursive Generator (2000, 2005)
    (MRG, 31 bits or 32 bits, 3 different values of periodicities, see references [2] and [3]);
  • Permutated Congruential Generator (2014)
    (PCG, 64, 128 bits or 64/32 bits, 3 different values of periodicities, see reference [7]);
  • Squares (2022)
    (Squares, 32 or 64 bits, 1 value of periodicity but 32- or 64-bits output values, see reference [9]);
  • Well-Equilibrated Long-period Linear generators (2006)
    (WELL, 32 bits, 4 different values of periodicities, see reference [6]);
  • Scrambled Linear Pseudorandom Number Generators (2018)
    (Xoroshiro, 64 bits, 4 different values of periodicities, see reference [10]).

CppRandLib 2.0 provides then 28 different classes. Code is fully tested with Google Tests. Code coverage is 100% and all tests passed, on 32-bits and 64-bits platforms, in Debug and Release (i.e. non-debug) configurations.

Notice: Release 1.0 is no more available and has been deleted.