From the lavarand® webpage, how lavarand works
Step 1: Establish a
chaotic system (Set up Lava Lite® lamps in a machine room):

Lava Lite lamps are very good chaotic sources when operated under conditions recommended by the manufacturer. We use the ElecktrickTM Lava Lite
lamp model, in part because it works well in colder conditions found in machine rooms but more importantly, it comes in rad colors!
Step 2:
Digitize the chaotic system (Take digital images of the Lava Lite lamps):
 An O2camTM digital camera is set up in front of six Lava Lite lamps. The digital camera takes a picture of the Lava Lite lamps every once in a while:
 Digital cameras are "noisy" by nature. Taking two pictures of the same object will more likely than not produce two different images. Digital cameras add
digital noise to the visual signal that they process.
Step 3:
Cryptographically hash the digitization of the chaotic system (Feed the digital output through a number
munger):
Step 4: Seed a
pseudorandom number generator (Feed the 140byte value through another number munger):
 The 140byte value gets fed through the Blum Blum Shub  one of the best available number generators, its quality endorsed by respectable
mathematicians everywhere. Think of a roulette game as an analogy  the pseudorandom number generator is the roulette wheel, the seed is how long the
roulette wheel spins before it begins to slow down. The slot the ball falls into at the end is the resulting random number. Voila! You have a random
number!
 Here is a sample 128byte random number (in base 16):
0abaa8abf2204f775e1edde38f3768858ec9234eae5fb32651374064a76ebc4e
1e2c5ede9264722489fd5dc0de70016c4720a5317d5cd218bf2b76d81d1a81ce
3fca399723f9499e938943be1077113973fd8d1d6e62b505a548f504794c4cb1
b4f06d122253423d29fe019fb3fe44a25e29f810327ec5be3578995ea11ba534
 NOTE: This random data is provided ``as is''. Obviously the random data generated by these demos is not secure since anyone can see this same data. See
our standard disclaimer.
 The technogeek explanation:
We use the Blum Blum Shub pseudorandom number generator, which takes the product of two prime numbers and generates a very long,
cryptographically strong sequence of pseudorandom bits.
 The Blum Blum Shub is based on the low order bits of quadratic residues of a product of two Blum primes. Blum primes are primes that are 3 mod 4. A
quadratic residue is the square of a value modulo some value, in this case, modulo a product of two Blum primes. In this example we are using the
following 1062bit product of two Blum primes:
5360751114622011236087979022735306713592537659947455285353148181
8526455500785383194936281698585494806464721601253386562653528822
5543322562532917886396992291116815877218495559211688377961466145
0857446201926232198015028137924055146650866097197909406089918491
4133568666470293429076893274969016410915119621659901793350665953