RFC: a package to interface to Random number web services
| From: | Jesus M. Castagnetto | Date: | Wed, 01 Jan 2003 22:17:28 +0000 |
| Subject: | RFC: a package to interface to Random number web services | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-11991@lists.php.net to get a copy of this message | ||
There are several web-based services that provide some math info/data. The two
I have played with are www.random.org and HotBits
(http://www.fourmilab.ch/hotbits/). Both sites provide true random numbers,
which can be useful for a variety of purposes. The HoBits site uses radioactive
decay for generating their numbers, and random.org tests theirs with a battery
of statisical analysis to assure true randomness.
Initially I made an interface only for random.org, but then I found HotBits,
and modify the whole system to use that too. It uses static methods to call or
create the appropriate objects. HotBits returns a string of hexadecimals
representing bytes, and random.org can return decimal numbers or a list of
bytes (in hexadecimal).
For lack of a better name I am calling it Math_WebService, but that name can be
changed. Get the code using:
$ pear install http://www.scripps.edu/~jesusmc/stuff/Math_WebService-0.8.tgz
In both services, I named the services' methods as the CGIs being used at the
their respective sites (mapped internally to the appropriate method). An
example of usage is below:
include_once 'Math/WebService.php';
echo "random.org\n";
$ran =& Math_WebService::create('randomorg');
echo "* randbyte(nbytes=8)\n";
$res = $ran->request('randbyte', array('nbytes'=>8));
print_r($res);
echo "* randnum(num=10)\n";
$res = $ran->request('randnum', array('num'=>10));
print_r($res);
echo "* again randnum() using prev parameters\n";
$res = $ran->more();
print_r($res);
echo "\nhotbits\n";
$hot =& Math_WebService::create('hotbits');
$res = $hot->request('hotbits',array('nbytes'=>5));
echo "* hotbits(nbytes=5)\n";
print_r($res);
$res = $hot->more();
echo "* again hotbits() using prev parameters\n";
print_r($res);
echo "\nrandom.org\n";
$res = Math_WebService::request('randomorg', 'randnum',
array('num'=>7));
echo "* randnum(num=7) using a factory method from Math_WebService\n";
print_r($res);
Opinions/suggestions for code and name/+1s are welcomed.
Cheers.
=====
--- Jesus M. Castagnetto (jcastagnetto@yahoo.com)
Research:
http://metallo.scripps.edu/
Personal: http://www.castagnetto.org/
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com