I was wondering how a computer or any other device can generate random numbers. Is there a way to do this using only digital parts(non-programmable parts such as gates)? When I think of it, it seems like there has to be an "analog side" to generate random numbers. How can one make a multi-bit random number?
See this article
Uncertain Circuits: When transistor 1 and transistor 2 are switched on, a coupled pair of inverters force Node A and Node B into the same state [left]. When the clock pulse rises [yellow, right], these transistors are turned off. Initially the output of both inverters falls into an indeterminate state, but random thermal noise within the inverters soon jostles one node into the logical 1 state and the other goes to logical 0.
Also see the white paper (Respawned Fluff note: This is for an older Intel method, using two free-running oscillators, not the one described above.)
A more "analog" approach is to reverse-bias a PN junction into breakdown or avalanche. Doing so (from a high impedance) causes electricity to conduct fairly randomly, producing a white-noise output which is statistically quite random. This Article by Giorgio Vazzana has to say, "Avalanche noise is the noise produced when a junction diode is operated at the onset of avalanche breakdown. It occurs when carriers acquire enough kinetic energy under the influence of the strong electric field to create additional electron-hole pairs by colliding with the atoms in the crystal lattice. If this process happens to spill over into an avalanche effect, random noise spikes may be observed."