PHP port of the (non-cryptographic) Alea pseudo-random number generator

0.9.0 2019-07-11 15:55 UTC

README

alea.php is a port of the non-cryptographic Alea pseudo-random number generator to PHP.

Alea was designed to be very fast (in JavaScript) and to generate non-platform-dependent repeatable sets of random numbers (when supplied with matching seeds). Given portable seeds (strings or integers, for example), numbers generated by the JavaScript version of alea will exactly match those generated by this PHP port, and vice-versa.

Install

This package is available on Packagist:

$ composer require wikimedia/alea

Usage

use Wikimedia\Alea\Alea;

$prng = new Alea(); // add an optional seed parameter
$nextRandom = $prng->random(); // or ->uint32() or ->fract53()

We also have the ability to sync up two Alea PRNGs (even across platforms) via the importState and exportState methods.

$prng1 = new Alea(200);

$prng1->random();
$prng1->random();

$prng2 = Alea::createWithState( $prng1->exportState() );

assert( $prng1->random() === $prng2->random() );
assert( $prng1->random() === $prng2->random() );
assert( $prng1->random() === $prng2->random() );

Acknowledgements

The Alea code was written (in JavaScript) by Johannes Baagøe, and packaged for npm by coverslide.

Read more on Johannes' site.

The port to PHP was initially done by C. Scott Ananian and is (c) Copyright 2019 Wikimedia Foundation.

Both the original alea codebase and this port are distributed under the MIT license; see LICENSE for more info.