http://www.perlmonks.org?node_id=56979


in reply to Random numbers generator

"Anyone trying to achieve true randomness with an automatic machine is a fool".
(It's a bad French->English translation from an old quote I remember...)

Seriously, if you want to make effective pseudo random generator you'll have to find a way to get 'chaotic' seed values (keyboard timer,time,uptime...) some OS provide (quite) good sources (who said /dev/random /dev/urandom ?) but the 'real' randomness could only be reached by dedicated special hardware.

Now for the algorithm the most used is linear congruential generator n+1=(n*a+b)%c but there are a lot others; I recommend you any book on crypto (the SCHNEIER or the STINSON) for they will explain you the weaknesses/strength of all algorithms...

But if as I think, you just want something simple : the linear congruential generator with a,b,c values defined according to the RFC 1750 and an initial seed based on several pseudo-random factors (uptime,checksum on MAC address,delay between keystroke) should be fast and random enough.