yerazunis@cthulu.dec.com (10/11/89)
I've built the following and subjected it to autocorrellation, slicing, and entropy examination for blocks of 1000 bytes. It never came out with less than 7.8 bits/byte entropy... Take an ordinary NPN transistor. Tie the collector to the base, and then forward-bias it so you get about a 0.1 mA current through it (this was a 10K resistor in my application). Lead the connection between the resistor and the transistor to the - input of an op-amp. Tie the output of the op-amp to (1) a 50K resistor in series with a 10-microfarad capacitor, thence to ground and (2) directly to the CPU input port. Connect the 50K/10u junction to the + input of the op-amp. That's it. (this, of course, presumes an op-amp that can work on a +5V single-ended supply. If you don't have one, then buffer the op-amp output with a CMOS inverter. This makes all the zeroes into ones, and all the ones into zeroes, but since the bits are supposed to be random you'll probably never notice. If you want 4 bits at a time, build 4 such circuits. Be sure to isolate their power inputs (bypass caps are a good idea), so they don't start to oscillate with each other and thereby start some sort of correllation. It's probably unnecessary to build more than one bit worth of this circuit- this circuit will generate at least 100 very random bits per second. Do the autocorrellation and entropy tests anyway, just to make sure you don't have a electrically-noisy system that is "fixing" the numbers. -Bill Copyright 1989 William S. Yerazunis (aka Crah the Merciless) All rights reserved, no responsibility taken. "I refuse to wear a 'power suit' unless it's powered armor!"