![JAR search and dependency download from the Maven repository](/logo.png)
org.cicirello.math.rand.package-info Maven / Gradle / Ivy
/*
* Ziggurat Gaussian and other randomization related algorithms.
* Copyright 2015, 2017-2022 Vincent A. Cicirello, .
*
* This program is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/**
*
*
* org.cicirello.math.rand
*
* Copyright © 2015, 2017-2024 Vincent A.
* Cicirello.
*
*
Support
*
* See ρμ for Expanded Functionality
*
* If you find the functionality of this package useful, please see the ρμ library, which has absorbed this entire package and has greatly expanded
* upon it.
*
*
About
*
* This package originated as part of an effort to speed up the runtime of a parallel genetic
* algorithm (PGA). The PGA in question evolved its control parameters (i.e., crossover and mutation
* rates, etc) using Gaussian mutation. The only Gaussian implementation within the Java API is the
* polar method (nextGaussian method of the {@link java.util.Random Random} and {@link
* java.util.concurrent.ThreadLocalRandom ThreadLocalRandom} classes, however the polar method is
* quite slow relative to other newer available alternatives, such as the Ziggurat method.
*
*
You can find information on when this ziggurat implementation is likely advantageous,
* including results of experiments in the following report:
*
*
* - Vincent A. Cicirello. 2024. Fast Gaussian
* Distributed Pseudorandom Number Generation in Java via the Ziggurat Algorithm. arXiv:2405.19493, May 2024. doi:10.48550/arXiv.2405.19493. [PDF]
*
*
* You can find some experimental data comparing the performance of a sequential genetic
* algorithm (GA) using the implementation of the Ziggurat method for Gaussian mutation vs using the
* more common polar method, as well as experimental data for the same comparison but with a PGA, in
* the following paper:
*
*
* - V. A. Cicirello. Impact of Random Number Generation on Parallel Genetic Algorithms.
* Proceedings of the Thirty-First International Florida Artificial Intelligence Research
* Society Conference, pages 2-7. AAAI Press, May 2018.
*
*
* @author Vincent A. Cicirello, https://www.cicirello.org/
*/
package org.cicirello.math.rand;