Tired of unpredictable pseudo-random number generator (PRNG) seed artifacts? Need a high-speed/high-volume source of truly random data for Monte-Carlo, gaming, or security? The Quantis Quantum Random Number Generator from IDQ could be what you need. Certified by the Swiss Federal Office of Metrology, the Quantis devices can crank out up to 16 Mbps (in-machine version), or 4Mbps for the USB version:
This white-paper discusses how they work, and why they should be used.
These units are supported under Windows, Linux, FreeBSD, and Solaris. The USB version needs libusb1 under Linux, so a recent distribution is required. The installation instructions are well-written, and good sample programs are included in the C, C#, C++, Java, and VB.NET languages (in addition, a run-time application “EasyQuantis” to test the installation is included). The maximum number of bytes that can be read at-a-time is 16MBytes; this took about 33 seconds via the USB device (4Mbits/S). As might be expected, trying to compress the (binary) random data yields either no, or negative compression (output file is larger).
Taking 16MBytes of data and putting the values into 1 of 256 “bins” (byte values), the mean value was 65536, with a median of 65513.5, a standard deviation of 292, a minimum of 64798, and a maximum of 66278 (as computed by SciPy).
There are several on-line sites for random numbers; Random.org (uses atmospheric noise), Hotbits (radioactive decay), or the Quantum Random Bit Generator Service (photonic emission from semiconductors). I’ve noticed that one or more of these sites may be unusable at any time (device/network issues). Security/privacy of the data may be an issue, and the quantity of available random data may be limited from these sites (Hotbits generates about 100 Bytes/Second). One of my favorite (fringe) techniques is LavaRnd, conceived and first implemented at Silicon Graphics, just before the turn-of-the-century.
The delivery time for the Quantis devices is very fast (2 days), but in the event of device failure (they are self-monitoring), having a “reservoir” of random data that can be tapped which is large enough to cover any down-time is a good idea. I built an RNG daemon that switches between the Quantis and a reservoir transparently to applications (and, of course, logs & emails notifications).
At a price of under $2000 USD, these units solve a lot of problems.