function random_bytes($bytes)
{
    try {
        $bytes = RandomCompat_intval($bytes);
    } catch (TypeError $ex) {
        throw new TypeError(
            'random_bytes(): $bytes must be an integer'
        );
    }

    if ($bytes < 1) {
        throw new Error(
            'Length must be greater than 0'
        );
    }

    $buf = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
    if (
        $buf !== false
        &&
        RandomCompat_strlen($buf) === $bytes
    ) {
        /**
         * Return our random entropy buffer here:
         */
        return $buf;
    }

    /**
     * If we reach here, PHP has failed us.
     */
    throw new Exception(
        'Could not gather sufficient random data'
    );
}
The software uses a Pseudo-Random Number Generator (PRNG) but does not correctly manage seeds.