Hackaday Prize Entry: Nuclear Powered Random Number Generator

Random number generators come in all shapes and sizes. Some are software based while others, known as true random number generators, are hardware based. These can be created from thermal noise, the photoelectric effect and other methods. But none of these were good enough for [M.daSilva]. He would base his off of the radioactive decay of Uranium 238, and construct a working nuclear powered random number generator.


Because radioactive decay is unpredictable by nature, it makes for an excellent source for truly random data. The process is fairly simple. A piece of old fiestaware plate is used for the radioactive source. Put it in a lead enclosure along with a Geiger tube. Then wire in some pulse shaping circuitry and a microcontroller to count the alpha particles. And that’s about it. [M.daSilva] still has to do some statistical analysis to ensure the numbers are truly random, along with making a nice case for his project. But all in all, it seems to be working quite well.

Be sure to check out the video for quick rundown of [M.daSilva’s] project. If randomness is your thing, make sure you check out entropy harvested from uninitialized RAM, and the story behind the NIST randomness beacon.

Continue reading “Hackaday Prize Entry: Nuclear Powered Random Number Generator”

Clocked 8-Bit Random Pattern Generator For a CMOS Synth

A random noise generator is pretty handy when working with music, and building one using a micro-controller can be pretty trivial. So it’s nice when someone comes along and builds it from a few analog and digital parts. [acidbourbon] built his Clocked 8-BIT Random Pattern Generator for  CMOS Synth  inspired and motivated by the recent article Logic Noise: Sweet, Sweet Oscillator Sounds by [Elliot Williams]. It’s 8-bit output can be used as a random sequencer for DIY CMOS synths.
This pattern generator is suited to to be used in combination with a 4051 8-channel analog multiplexer. But it sounds quite interesting on it’s own (best enjoyed in stereo, check out the video after the break). After building some CMOS synth circuits, [acidbourbon] moved on to make some sequencers and multiplexers which then let him to devise this random pattern generator which could be gated using a clock signal.

The basic principle is straight forward – generate noise, amplify it, apply a clock to get the gated noise output. His design choices for the various sections are well explained, based on constraints that he had to work with. Everything needs to work at 5V, but his noise generator circuit requires 12V to work. He choose to use a charge pump to generate -5V, resulting in a 10V supply, which was barely enough, but worked. A boost regulator might probably have served better to generate 12V, but maybe he already had the ICL7660 charge pump IC lying around in his parts bin. The rest of the circuit uses standard CMOS/TTL devices, and [acidbourbon] provides all of the design files for what looks like a neat, single sided PCB that can easily be made using the toner-transfer method.

Video below.

Continue reading “Clocked 8-Bit Random Pattern Generator For a CMOS Synth”

Towards the Perfect Coin Flip: The NIST Randomness Beacon

Since early evening on September 5th, 2013 the US National Institute of Standards and Technology (NIST) has been publishing a 512-bit, full-entropy random number every minute of every day. What’s more, each number is cryptographically signed so that you can easily verify that it was generated by the NIST. A date stamp is included in the process, so that you can tell when the random values were created. And finally, all of the values are linked to the previous value in a chain so that you can detect if any of the past numbers in the series have been altered after the next number is published. This is quite an extensive list of features for a list of random values, and we’ll get into the rationale, methods, and uses behind this scheme in the next section, so stick around.

Continue reading “Towards the Perfect Coin Flip: The NIST Randomness Beacon”

Chaos Theory in Practice: Chua’s Circuit

Chua’s circuit is the simplest electronic circuit that produces chaos—the output of this circuit never repeats the same sequence, and is a truly random signal. If you need a good source of randomness, Chua’s circuit is easy to make and is built around standard components that you might have lying around. [Valentine] wrote a comprehensive guide which walks you through the process of building your own source of chaos.

The chaos of Chua’s circuit is derived from several elements, most importantly a nonlinear negative resistor. Unfortunately for us, this type of resistor doesn’t exist in a discrete form, so we have to model it with several other components. This resistor, also known as Chua’s diode, can be created with an op-amp configured as a negative impedance converter and a couple pairs of diodes and resistors. Other variations such, as the schematic above,22`01 model Chua’s diode using only op-amps and resistors.

The rest of the circuit is quite simple: only two capacitors, an inductor, and a resistor are needed. [Valentine] does note that the circuit is quite sensitive, so you might encounter issues when building it on a breadboard. The circuit is very sensitive to vibration (especially on a breadboard), and good solder connections are essential to a reliable circuit. Be sure to check out the Wikipedia article on Chua’s circuit for a brief overview of the circuit’s functionality and a rabbit trail of information on chaos theory.

Dual-mode Avalanche and RF Random Number Generator

[Paul] designed a new open-hardware RNG (random number generator) that includes two sources of entropy in a small package. The first source of entropy is a typical avalanche diode circuit, which is formed by a pair of transistors. This circuit creates high-speed random pulses which are sampled by the onboard microcontroller.

What makes this design unique is a second entropy source: a CC2531 RF receiver. The RF receiver continuously skips around channels in the 2.5Ghz band and measures the RF signal level. The least-significant bit of the signal level is captured and used as a source of entropy. The firmware can be configured to use either source of entropy individually, or to combine both. The firmware also supports optionally whitening the entropy byte stream, which evens out the number of 1’s and 0’s without reducing entropy.

The OneRNG uses the USB-CDC profile, so it shows up as a virtual serial port in most modern operating systems. With the rngd daemon and a bit of configuration, the OneRNG can feed the system entropy source in Linux. [Paul] also has a good writeup about the theory behind the entropy generator which includes images of his schematic. Firmware, drivers, and hardware design files are open-source and are available for download.

The Development Of A Hardware Random Number Generator


[Ian] had a need for a lot of random numbers. There are dozens of commercial offerings when it comes to RNGs, but there are also hundreds of different ways for an electronics hobbyist to shoot random bits at a serial port. One of these methods is an RNG based on the avalanche breakdown noise in a PN junction. As with any circuit in hobbyist electronics, there are dozens of prototypes floating out there on the web, but not too many finished projects. [Ian] decided he would build one of these RNGs as a prototype and bring it to something resembling a finished project.

An avalanche noise RNG takes advantage of the fact that a strongly reverse-biased PN junction, like one found in a transistor, will create a condition where one electron knocks another electron out of place, leading to a sustained chain reaction. It’s quantum, it’s chaotic, it makes for a great source for a random number generator, and there are already dozens of prototype circuits around the Internet.

[Ian] took one of these circuit designs by [Will Ware] and started the iterations that would lead to a finished design. Round one was a simple PCB with the basic circuit and a power supply. Just a few transistors, resistors, and a DC/DC boost converter. Confirming the circuit was generating noise, the next iteration brought in an ADC and an ARM micro with a USB interface. Iterating over this again with an improved ADC – 20 megasamples per second – the design finally reached a point where a final PCB could be designed.

In the end, [Ian] turned a simple circuit that could have been built on a breadboard into a USB device that throws 9kB/s of random data into a computer. The data are actually good, too: the project passed most of the Dieharder test suite, making it very useful for whatever crypto or gaming application [Ian] has in mind.

The Most Random Electronic Dice Yet


If you’ve written a great library to generate random numbers with a microcontroller, what’s the first thing you would do? Build an electronic pair of dice, of course.

[Walter] created the entropy library for AVRs for a reliable source of true random numbers. It works by using the watchdog timer’s natural jitter; not fast by any means but most sources of entropy aren’t that fast anyway. By sampling a whole lot of AVR chips and doing a few statistical tests, it turns out this library is actually a pretty good source of randomness, at least as good as a pair of dice.

The circuit itself uses two 8×8 LED matrices from Adafruit, an Arduino, and a pair of buttons. The supported modes are 2d6, 2d4, 2d8, 2d10, 1d12, 1d20, a deck of cards, a single hex number, a single 8-bit binary number, or an eight character alphanumeric password. It’s more than enough for D&D or when you really need an unguessable password. Video demo below.

Continue reading “The Most Random Electronic Dice Yet”