Technical Difficulties from on Top of the Mountain
2006-09-06
  Just a little random
I was helping a friend out over the weekend with a project and we got to the access control unit where he wanted to have long sequences of random numbers for the access key. "Fine," I said, "lets go find some random numbers." Sure you could use rand(), but unix random numbers have never had much respect. Long ago I pulled up a pseudo-random routine from the back of some programming magazine (that's how we learned about new stuff before the internet), and that's sat around in my toolkit for quite some time: #define Ra 1629 #define Rm 1048576 static unsigned long ran_seed ; void init_rand() { ran_seed= time() % Rm ; } int get_rand(int n) { ran_seed= (long) (Ra * ran_seed) % Rm ; return (n * ran_seed) / Rm ; } This is fine and all when you just need a few random bits for a game of hangman, or picking a random fortune, but its not so good when having something be random actually is important. There are of course larger pseudo-random cycles, and ways to whiten the data to avoid bias, but you're still dealing with something that's predictable on some scale or another.

At some point, once cyptrography became more widespread, having something better became more important and people started looking for real randomness. One such attempt was /dev/random which counted all the generic processes going on inside a computer, accumulating them together to produce random results. The length of a disk seek, the number of times an event was triggered, the checksum bits from various network packets received; thrown together and shaken. This produced decent results when used sparingly, but still not really random. If you're willing to spend enough money, you can buy these really cool boxes that have a radioactive isotope or high temperature thermal emitter and a detector that counts the picosecond spaces between individual particle emissions, but for something casual, these might be overkill.

Still, this is 2006, not 1984; there ought to be some solution out there perfect for the casual user:

Ah, web 2.0 to the rescue: random.org, using background radio noise from the atmosphere as an entropy source, this site produces numbers, sequences, raw bytes or even pictures.

HTML, http, soap and Corba are all welcome.

 
Comments:
This is not significantly different than what I do when creating a 3D animated sequence that requires organic motion or textures -- source from nature. Generating pseudo-nature just doesn't cut the mustard: the human brain can tell the difference.

Love,
Cheeseburger Brown
 
Post a Comment

<< Home
Life in the middle of nowhere, remote programming to try and support it, startups, children, and some tinkering when I get a chance.

ARCHIVES
January 2004 / February 2004 / March 2004 / April 2004 / May 2004 / June 2004 / July 2004 / August 2004 / September 2004 / October 2004 / November 2004 / December 2004 / January 2005 / February 2005 / March 2005 / April 2005 / May 2005 / June 2005 / July 2005 / August 2005 / September 2005 / October 2005 / November 2005 / December 2005 / January 2006 / February 2006 / March 2006 / April 2006 / May 2006 / June 2006 / July 2006 / August 2006 / September 2006 / October 2006 / November 2006 / December 2006 / January 2007 / February 2007 / March 2007 / April 2007 / June 2007 / July 2007 / August 2007 / September 2007 / October 2007 / November 2007 / December 2007 / January 2008 / May 2008 / June 2008 / August 2008 / February 2009 / August 2009 / February 2010 / February 2011 / March 2011 / October 2011 / March 2012 / July 2013 / August 2013 / September 2013 / October 2013 / November 2013 / December 2013 / December 2014 / February 2015 / March 2015 / July 2016 / September 2016 / December 2016 / April 2017 / June 2017 /


Blogroll
Paul Graham's Essays
You may not want to write in Lisp, but his advise on software, life and business is always worth listening to.
How to save the world
Dave Pollard working on changing the world .. one partially baked idea at a time.
SnowDeal
Eric Snowdeal IV - born 15 weeks too soon, now living a normal baby life.
Land and Hold Short
The life of a pilot.

The best of?
Jan '04
The second best villain of all times.

Feb '04
Oops I dropped by satellite.
New Jets create excitement in the air.
The audience is not listening.

Mar '04
Neat chemicals you don't want to mess with.
The Lack of Practise Effect

Apr '04
Scramjets take to the air
Doing dangerous things in the fire.
The Real Way to get a job

May '04
Checking out cool tools (with the kids)
A master geek (Ink Tank flashback)
How to play with your kids

Powered by Blogger