NAME

Random::Simple - Generate good random numbers in a user consumable way.

SYNOPSIS

use Random::Simple;

my $coin_flip      = random_int(1, 2);
my $die_roll       = random_int(1, 6);
my $random_percent = random_float() * 100;
my $buffer         = random_bytes(8);

my @arr            = ('red', 'green', 'blue');
my $rand_item      = random_elem(@arr);

DESCRIPTION

Perl's internal rand() function uses drand48 which is an older pseudorandom number generator and may have limitations. Random::Simple uses PCG which is: modern, simple, well vetted, and fast. Using Random::Simple will automatically upgrade/override the core rand() function to use a better PRNG.

Random::Simple is automatically seeded with entropy directly from your OS. On Linux this is /dev/urandom and on Windows it uses CryptGenRandom.

When you `use Random::Simple` we automatically upgrade `rand()` and `srand()` to use a modern PRNG with better statistical properties. As a bonus you also get a handful of other useful random related methods.

METHODS

random_int($min, $max)

returns a non-biased integer between $min and $max (inclusive). Range must be no larger than 2**32 - 2.

random_float()

returns a random floating point value between 0 and 1 (inclusive).

random_bytes($number)

returns a string of random bytes with length of $number.

random_elem(@array)

returns a random element from @array.

srand()

emulates CORE::srand() using a better PRNG.

rand()

emulates CORE::rand() using a better PRNG.

Random::Simple::seed($seed1, $seed2)

Seed the PRNG with two unsigned 64bit integers for predictable and repeatable random numbers. Random::Simple will automatically seed itself from your operating system's randomness if not manually seeded. Manual seeding should only be used in specific cases where you need repeatable or testable randomness.

CAVEATS

PCG uses two 64bit unsigned integers for seeding. High quality seeds are needed to generate good random numbers. Random::Simple automatically generates high quality seeds by reading random bytes from your operating system and converting appropriately.

If you manually seed Random::Simple, then make sure you use good seeds that are mostly non-zero. The larger the number the better seed it will make. A good seed is a decimal number with 18 or 19 digits.

BUGS

Submit issues on Github: https://github.com/scottchiefbaker/perl-Random-Simple/issues

SEE ALSO

AUTHOR

Scott Baker - https://www.perturb.org/