Journal of Open Source Software, 7(76), Article 4663, . doi:10.21105/joss.04663

[PDF] [BIB] [DOI]

Abstract

The ρμ library is a Java library of Randomization enHancements and Other Math Utilities. It originated as a core dependency for our other open source research software libraries, such as JavaPermutationTools and Chips-n-Salsa, providing these libraries with efficient randomization related algorithms. For example, Chips-n-Salsa is a library of stochastic local search and evolutionary algorithms, which requires fast generation of random indexes into arrays and other structures, as well as fast generation of non-uniform random numbers to implement Gaussian mutation, Cauchy mutation, etc. The ρμ library includes implementations of efficient algorithms for randomly sampling indexes into arrays and other sequential structures, randomly sampling pairs and triples of distinct indexes, randomly sampling k indexes, among others, and also includes efficient random number generation from non-uniform distributions, such as Gaussian, Cauchy, and Binomial. It also includes math functions required by the randomization utilities. The documentation is hosted on the web (https://rho-mu.cicirello.org/), and source code on GitHub (https://github.com/cicirello/rho-mu), which includes a directory of example programs illustrating ρμ usage.