Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

math::randomorg(3pm) [debian man page]

Math::RandomOrg(3pm)					User Contributed Perl Documentation				      Math::RandomOrg(3pm)

NAME
Math::RandomOrg - Retrieve random numbers and data from random.org. SYNOPSIS
use Math::RandomOrg qw(randnum randbyte); my $number = randnum(0, 10); my $octet = randbyte(1); DESCRIPTION
Math::RandomOrg provides functions for retrieving random data from the random.org server. Data may be retrieved in an integer or byte- stream format using the "randnum" and "randbyte" functions respectively. REQUIRES
Carp Exporter Math::BigInt LWP::Simple EXPORT
None by default. You may request the following symbols be exported: * randnum * randbyte FUNCTIONS
"checkbuf()" This routine takes no parameters and simply returns a single value (e.g., "28%") telling you how full the buffer is. At 100%, the buf- fer is full and you are free to hit it with automated clients. At 0%, the buffer is empty and requests will hang. When less than 100%, the buffer is being filled continually, but doing so takes time. I advise people with automated clients to check the buffer level every once in a while and only issue requests when the buffer level is 20% or higher. "randnum ( $min, $max )" Return an integer (specifically a Math::BigInt object) between the bounds [ $min, $max ] (inclusive). By default, $max and $min are positive and negative 1e9, respectively. These default values represent random.org's current extrema for the bounds of the randnum function. Therefore, $min and $max may not exceed the default values. "randbyte ( $length )" Returns an octet-string of specified length (defaults to one byte), which contains random bytes. $length may not exceed 16,384, as this is the maximum number of bytes retrievable from the random.org server in one request, and making multiple requests for an unbounded amount of data would unfairly tax the random.org server. If you need large amounts of random data, you may wish to try the Math::TrulyRandom module. "randseq ( $min, $max )" The randseq script returns a randomized sequence of numbers. This corresponds to dropping a number of lottery tickets into a hat and drawing them out in random order. Hence, each number in a randomized sequence occurs exactly once. Example: "randseq(1, 10)" will return the numbers between 1 and 10 (both inclusive) in a random order. BUGS
None known. SEE ALSO
* Math::TrulyRandom * rand COPYRIGHT
Copyright (c) 2001-2006 Gregory Todd Williams. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. AUTHOR
Gregory Todd Williams "<gwilliams@cpan.org>" perl v5.8.8 2008-03-09 Math::RandomOrg(3pm)

Check Out this Related Man Page

Statistics::Test::Sequence(3pm) 			User Contributed Perl Documentation			   Statistics::Test::Sequence(3pm)

NAME
Statistics::Test::Sequence - Sequence correlation test for random numbers SYNOPSIS
use Statistics::Test::Sequence; my $tester = Statistics::Test::Sequence->new(); $tester->set_data( [map {rand()} 1..1000000] ); my ($metric, $actual_freq, $expected_freq) = $tester->test(); use Data::Dumper; print "$metric "; print "Frequencies: "; print Dumper $actual_freq; print "Expected frequencies: "; print Dumper $expected_freq; DESCRIPTION
This module implements a sequence correlation test for random number generators. It shows pairwise correlation between subsequent random numbers. The algorithm is as follows: (Following Blobel. Citation in SEE ALSO section.) o Given "N+1" random numbers "u_j". o For all "j", compare "u_j" with "u_j+1". If "u_j" is greater then "u_j+1", assign a 0-Bit to the number. Otherwise, assign a 1-Bit. o Find all sequences of equal Bits. For every sequence, increment a counter for the length "k" of that sequence. (Regardless of whether it's a sequence of 1's or 0's.) o For uncorrelated random numbers, the number of sequences N(k) of length "k" in the set of "N+1" random numbers is expected to be: N(k) = 2*((k^2+3*k+1)*N - (k^3+3*k^2-k-4)) / (k+3)! METHODS
new Creates a new random number tester. set_data Sets the random numbers to operate on. First argument must be either an array reference to an array of random numbers or a code reference. If the first argument is a code reference, the second argument must be an integer "n". The code reference is called "n"-times and its return values are used as random numbers. The code reference semantics are particularily useful if you do not want to store all random numbers in memory at the same time. You can write a subroutine that, for example, generates and returns batches of 100 random numbers so no more than 101 of these numbers will be in memory at the same time. Note that if you return 100 numbers at once and pass in "n=50", you will have a sequence of 5000 random numbers. test Runs the sequence test on the data that was previously set using "set_data". Returns three items: The first is the root mean square of the bin residuals divided by the number of random numbers. It could be used as a measure for the quality of the random number generator and should be as close to zero as possible. A better metric is to compare the following two return values. The second return value is a reference to the array of frequencies. An example is in order here. Generating one million random numbers, I get: [0, 416765, 181078, 56318, 11486, 1056, 150] This means there were no sequences of length 0 (obvious), 416765 sequences of length 1, etc. There were no sequences of length 7 or greater. This example is a bad random number generator! (It's a linear congruent generator with "(a*x_i+c)%m" and "a=421", "c=64773", "m=259200", and "x_0=4711"). The third return value is similar in nature to the second in that it is a reference to an array containing sequence length frequencies. This one, however, contains the frequencies that would be expected for the given number of random numbers, were they uncorrelated. The number of bins has the maximum length of an occurring sequence as an upper limit. In the given example, you would get: (Dumped with Data::Dumper) $VAR1 = [ '0', '416666.75', '183333.1', '52777.64722222222222222222222222222222222', '11507.89523809523809523809523809523809524', '2033.72068452380952380952380952380952381', '303.1287808641975308641975308641975308642', # ... ]; Note that where I put in a "# ...", you would really see a couple more lines of numbers until the numbers go below an expected frequency of 0.1. For "n=1000000" and "k=7", you get about 39 sequences, "k=8" is expected to be found 4-5 times, etc. SUBROUTINES
expected_frequency Returns the expected frequency of the sequence length "k" in a set of "n" random numbers assuming uncorrelated random numbers. Returns this as a Math::BigFloat. Expects "k" and "n" as arguments. This subroutine is memoized. (See Memoize.) faculty Computes the factulty of the first argument recursively as a Math::BigFloat. This subroutine is memoized. (See Memoize.) SEE ALSO
Math::BigFloat, Memoize, Params::Util Random number generators: Math::Random::MT, Math::Random, Math::Random::OO, Math::TrulyRandom, "/dev/random" where available The algorithm was taken from: (German) Blobel, V., and Lohrmann, E. Statistische und numerische Methoden der Datenanalyse. Stuttgart, Leipzig: Teubner, 1998 AUTHOR
Steffen Mueller, <smueller@cpan.org> COPYRIGHT AND LICENSE
Copyright (C) 2007 by Steffen Mueller This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6 or, at your option, any later version of Perl 5 you may have available. perl v5.10.0 2007-01-05 Statistics::Test::Sequence(3pm)
Man Page