What is this all about?
This website provides online, unique and live quantum random numbers to the public. These numbers are generated in real time in our lab using lasers to measure the vacuum fluctuations. The technical details on how this is done can be found in our publications. The numbers are then streamed to our webserver for anyone to download free of charge.
If you have any comment or suggestions, we would be happy to hear it. Also if you require bigger sequences or if you want to have your very own quantum random number generator, please contact us at: firstname.lastname@example.org.
What is ANU QRNG?
ANU is The Australian National University. We are a university in Canberra, the capital city of Australia. QRNG stands for Quantum Random Number Generator.
Who needs so much random numbers anyway?
We primarily use these random numbers to generate secret keys for our quantum cryptography experiments. But they are also used in other fields. For example, random numbers are used to assign participants in randomised clinical trials, simulate dice throws in computer games, generate secure passwords, simulate virus outbreak behaviours, pick winners for lucky dips and perform simulations to predict the weather. And with fast computers, sometimes we need a lot of them.
If you are using our random numbers in your projects, we’d love to hear about it.
How fast are the numbers being generated?
The hardware is constantly generating random bits at a rate of 5.7 Gbits/s. Currently, the rate at which the live bits are streamed is being by the bandwidth of the internet connection.
What do we mean by ‘true randomness’?
In a truly random sequence, given as many past bits, we will not be able to predict the next bit with greater than 50 percent probability of success.
Why do we think that we have true randomness?
We are measuring the quantum fluctuations of the vacuum and quantum mechanics predicts that it will be random. If we can find some patterns in the numbers then physicist would have to work on a better theory to explain what is going on. Or maybe there were loose cables in our experiment. Moreover, we devised a method to isolate the contributions of the quantum fluctuations from other sources of noise, such as electronic noise, in our random numbers.
How do we know that we have true randomness?
We don’t. All we can say is that the statistics of the output are consistent with true randomness based on some statistical tests. Each of the test will return a p-value. These p-values give the probabilities of obtaining the observed (or a more extreme) results assuming that the underlying distribution is random.
From time to time, our random sequence will return a low p-value. This is because even a seemingly non-random sequence is sometimes produced at random. But over a large enough sample, these p-values should have a uniform distribution.
What are pseudorandom numbers and how are they different from true random number generators?
Traditionally, computers rely on mathematical algorithms to generate ‘random’ numbers. These type of random numbers are called pseudorandom numbers. For a finite sample, good pseudorandom number generators will also reproduce statistics that are consistent with true randomness.
But all pseudorandom number generators rely on a seed to generate the random sequences. This means that anybody who has access to the seed will be able to generate the same sequence of random numbers.
Moreover, most pseudorandom numbers have a finite period. Good pseudorandom number generators, for example the Mersenne Twister MT19937 have humongous periods. But eventually, if we wait long enough, the sequence will repeat itself.
However for our random number generator, even if two exactly identical generators were placed in identical environments with identical initial conditions, the two streams of number generated will still be totally uncorrelated to each other.
Are the random numbers unique and secure?
Each time you open one of the ‘live stream’ or ‘block’ pages the server will deliver new and unique random numbers. So two persons accessing the same page at the same time will still receive different (up to some statistical probabilities) random numbers. Moreover, these pages are authenticated and encrypted to add extra security. So, as long as nobody hacks our server, or is able to break the encryption protocol, the random numbers you obtain from this website should be unique and secure.
We do not keep a copy of the numbers that are served. If you misplace your numbers, we have no way to tell you what those numbers were.
Donating to ANU QRNG
Lasers, high-speed detectors, FPGA and servers cost money. If you would like to support our work, please consider donating to the group at ANU Giving, with designation set to “Quantum Random Number Server Project Fund”.
Why is the ANU Giving page asking for your personal information and making it so hard for you to donate? Sorry, but it’s university policy to make sure that our research funding do not come from any dubious or unknown source.
How can I use these numbers in my programs or experiments?
The raw data from the ‘block’ pages can be accessed from these links: alphanumeric, hexadecimal and binary. Each link returns a unique fixed amount of random numbers in the specified form. There is also an HTTP GET based API that returns JSON responses. This API documentation page demonstrates the input parameters for the requests. There are several independent projects on GitHub that provides an interface to directly access the live random numbers. Some of them are listed below.
- The AnuQRandom.NET project by Nesae is an asynchronous .NET 6 library to query both the old and new QRNG API. The source code is available on GitHub.
- qrandom is a Python package by Seto Balian that allows you to use the ANU quantum random numbers with the same interface as Python’s standard random module. Numpy is also supported.
- The BetterRandom Java library by Chris Hennick now includes an AnuQuantumSeedGenerator class which can be used by Java, Kotlin, Scala or Clojure developers targeting the JVM and Android platforms. The default configuration is to use the ANU QRNG on all systems without access to /dev/random. If the ANU QRNG is down, DefaultSeedGenerator will try random.org instead, and if all else fails then it will use SecureRandom.
- The qrandom R-package by Siegfried Köstlmeier provides an interface for the R-language which is available on CRAN. The source code is available on GitHub.
- The quantumrandom project by Luke Macken provides a Python interface as well as a Linux command line tool. The source code is available on GitHub.
- The node-qrand project by cbumgard provides an interface in Node.js language. The project QRANoDe is an updated fork of this by ExperiBass.
- An interface for various languages (Ruby, C, C++, sh, Java, Python) is provided by the anurandom project created by pcragone on GitHub.
- The ANUQRandom project by freematrix provides an .NET library to query the QRNG.
- The Perl module Net::Random on CPAN by David Cantrell provides an interface to the ANU QRNG as well as other online RNGs.
- In Matlab, this QRNG interface can be used to access the QRNG server.
- The Quantum random number generator matlab function by Gorka Zubia returns random numbers between 1 to n without repetition.
Disclaimer: While we appreciate and welcome open source collaborations, these codes are contributed by independent parties and are not part of the ANU. The ANU cannot be responsible for the codes you choose to install.
We need a lot of unique random numbers? What should I do?
Send us an email and we can find a way to help. If you do not need live numbers, there are some pre-generated random binary numbers (sizes from 10 MB to 5 GB) on the AARNnet cloudstor server. But please do not use a script to download the ‘blocks’ ten thousand times a second. This will cause our servers to crash.