Random Number Generator Uses Camera Noise

Random numbers are very important to us in this computer age, being used for all sorts of security and cryptographic tasks. [Theory to Thing] recently built a device to generate random numbers using nothing more complicated than simple camera noise.

The heart of the build is an ESP32 microcontroller, which [Theory to Thing] first paired with a temperature sensor as a source of randomness. However, it was quickly obvious that a thermocouple in a cup of tea wasn’t going to produce nice, jittery, noisy data that would make for good random numbers. Then, inspiration struck, when looking at vision from a camera with the lens cap on. Particularly at higher temperatures, speckles of noise were visible in the blackness—thermal noise, which was just what the doctor ordered.

Thus, the ESP32 was hooked up to an OV3660 camera, which was then covered up with a piece of black electrical tape. By looking at the least significant bits of the pixels in the image, it was possible to pick up noise when the camera should have been reporting all black pixels. [Theory to Thing] then had the ESP32 collate the noisy data and report it via a web app that offers up randomly-generated answers to yes-or-no questions.

[Theory to Thing] offers up a basic statistical exploration of bias in the system, and shows how it can be mitigated to some degree, but we’d love a deeper dive into the maths to truly quantify how good this system is when it comes to randomness. We’ve featured deep dives on the topic before.

Continue reading “Random Number Generator Uses Camera Noise”

Open-Source Random Numbers

Whether it’s a game of D&D or encrypting top-secret information, a wide array of methods are available for generating the needed random numbers with high enough entropy for their use case. For a tabletop game this might be a single die but for more sensitive applications a more robust method of generating random numbers is needed. Programmers might reach for a rand() function of some sort, but these pseudorandom numbers don’t cut the mustard for encryption. For that you’ll need a true random number generator (RNG), and this open-source hardware RNG uses one of the better methods we’ve seen.

The device, called RAVA, is based on a property found in many electronic devices called avalanche breakdown. Avalanche breakdown occurs when a high voltage (in this case approximately 25V) is applied in the reverse bias direction, with this device using a pair of Zener diodes. When this high voltage is applied, an “avalanche” of electrons occurs which allows the diodes conduct in the opposite direction that they would when they are forward biased. This isn’t a constant current flow, though; there are slight variations over time which can be amplified and used as the random number generator. The noise is amplified over a series of op amps and then fed to an ATmega32U4 microcontroller which can provide the user with 136.0 Kbit/s of random data.

Unlike other random number generators, this device is based on a method generally accepted to be truly random. Not only that, but since it’s based on discrete hardware it can be accessed directly for monitoring and replacement in case of faults, unlike other methods which are more “black boxes” and are more opaque in their processes which are thus harder to audit. We also appreciate it’s open-source nature as well, and for some more information on it be sure to check out the paper on it in IEEE. If you’re looking for something to generate random numbers but will also bring some extra flair to the next game night, take a look at this radioactive dice replacement.

The DeDeterminator Uses Quantum Physics To Make Decisions So You Don’t Have To

Are you making your own decisions and mainlining causality like a sucker? Why go through the agony, when you could hand over the railway switch of determinism to a machine that can decide things for you! Enter the DeDeterminator, a decision machine from [Oliver Child].

The construction is simple enough, being built inside a small tin. One kind of wishes it had a secret third “PERHAPS” bulb that illuminates only when the universe’s continued existence has been called into question.

The idea is simple. At the press of a button, the DeDeterminator illuminates a bulb—indicating either yes or no. The decision for which bulb to illuminate is truly random, as it’s determined by the radioactive decay of a Americium-241 alpha particle source. A Geiger-Muller tube is used to detect alpha particles, with the timing between detections used to determine the yes-or-no output of the device.

It’s a neat concept, and it’s kind of fun knowing that your decision is both out of your hands and as random as it could possibly be. Would the universe guide you wrong? Who could possibly question the reasoning of the particles? The only rational move could be to comply with whatever directive the box hath given. Just don’t ask it to make any decisions with dangerous outcomes.

We’ve featured other projects using radioactive decay for random number generation before, though they weren’t quite as philosophically intriguing as the DeDeterminator. Mostly they’re just about cryptographic security and such, but some do deal with causality in imaginary spaces, which has its own magic about it.

Meanwhile, if you’ve untangled the quantum chains of cause and effect, or you’ve just found a way to break RSA encryption using a Pi Pico, do drop us a line, won’t you?

Random Number Generation By Brain

If you want to start an argument in certain circles, claim to have a random number generation algorithm. Turns out that producing real random numbers is hard, which is why people often turn to strange methods and still, sometimes, don’t get it right. [Hillel Wayne] wanted to get a “good enough” method that could be done without a computer and found the answer in an old Usenet post from random number guru [George Marsaglia].

The algorithm is simple. Pick a two-digit number — ahem — at random. OK, so you still have to pick a starting number. To get the next number, take the top digit, add six, and then multiply by the bottom digit. So in C:  n1=(n/10+6)*(n%10). Then use the last digit as your random number from 0 to 9. Why does it work? To answer that, the post shows some Raku code to investigate the behavior.

In particular, where does the magic number 6 come into play? The computer program notes that not any number works well there. For example, if you used 4 instead of 6 and then started with 13, all your random digits would be 3. Not really all that random! However, 6 is just a handy number. If you don’t mind a little extra math, there are better choices, like 50.

If you think humans are good at picking random numbers, ask someone to pick a number between 1 and 4 and press them to do it quickly. Nearly always (nearly) they will pick 2. However, don’t be surprised when some people pick 141. Not everyone does well under pressure.

If you want super random numbers, try a lava lamp. Or grab some 555s and a few Nixie tubes.

Using Nuclear Decay As Random Number Generator Source For An MCU

Although there are many ways to get a random number generator (RNG) set up on a microcontroller, it’s hard to argue with the sheer randomness of the various kinds of radiation zipping all around us from nuclear decay events. For [gbonacini] the purchase of a Geiger counter first in 2022 was the reason to tinker with using these as the source for an RNG, which simply runs a counter until a Geiger counter event occurs that ‘selects’ a number and the counter is reset to zero.

With the next version of this system the hardware and layout has changed somewhat, using a commercial handheld Geiger counter (GMC-320+) and its audio output as a generic input for any MCU. The (pulsed) audio signal is amplified with an opamp (left unspecified) that connects to a GPIO pin of the MCU (RP2040-based Pico W). Here the same algorithm is used to create a continuous queue of randomly picked numbers, which can also be queried via the WiFi interface with a custom protocol, essentially making it a network-connected RNG that could be used by other network-connected appliances.

C++ source is provided for the Pico W example, but it should be easy enough to adapt to other platforms. The GMC-320+ is also among the more affordable Geiger counters out there, even if it’s somewhat bulky to pair with just a single MCU, making a more basic Geiger counter module better for a permanent installation. Either way you should get pretty good RNG this way without splurging on exotic hardware.

Thanks to [navigator] for the tip.

Roll The Radioactive Dice For Truly Random D&D Play

When you have a bunch of people gathered around a table for a “Dungeons & Dragons” session, you have to expect that things are not always going to go smoothly. After all, people who willingly create and immerse themselves in an alternate reality where one bad roll of the dice can lead to the virtual death of a character they’ve spent months or years with can be traumatic. And with that trauma comes the search for the guilty — it’s the dice! It’s always the dice!

Eliminating that excuse, or at least making it statistically implausible, is the idea behind this radioactively random dice roller. It comes to us from [Science Shack] and uses radioactive decay to generate truly random numbers, as opposed to the pseudorandom number generators baked into most microcontrollers. The design is based on [AlphaPhoenix]’s muon-powered RNG, but with a significant twist: rather than depending on background radiation, [Science Shack] brought the power of uranium to the party.

They obtained a sample of autunite, a weird-looking phosphate mineral that contains a decent amount of uranium, perfect for stimulating the Geiger counter built into the dice roller. Autunite also has the advantage of looking very cool under UV light, taking on a ghostly “fuel rod glow,” in the [Homer Simpson] sense. The decay-powered RNG at the heart of this build is used to simulate throws of every standard D&D die, from a D4 to a D100. The laser-cut hardboard case holds all the controls and displays, and also has some strategically placed openings to gaze upon its glowing guts.

We really like the design, but we have to quibble with the handling of the uranium ore; true, the specific activity of autunite is probably pretty low, but it seems like at least some gloves would have been in order.

Continue reading “Roll The Radioactive Dice For Truly Random D&D Play”

Yes We Have Random Bananas

If you ask a normal person to pick a random number, they’ll usually just blurt out a number. But if you ask a math-savvy person for a random number, you’ll probably get a lecture about how hard it is to pick a truly random number. But if you ask [Valerio Nappi], you might just get a banana.

His post, which is in two parts, details how what computers generate are actually pseudo-random numbers. You can easily make sure that every number has the same probability of selection as any other number. The problem is that you have to start with something — usually called a seed. For the purposes of playing games, for example, you can grab some source of entropy like how many microseconds since a hardware timer last rolled over, the number of input pulses you’ve received from a mouse lately, or how long you had to wait for the enter key to depress after asking the user to press it. But if you know that seed and the algorithm you can perfectly predict what number the computer will generate next so it isn’t truly random.

Continue reading “Yes We Have Random Bananas”