So I decided to learn how to gather "true" randomness based data and share my discovery with you.
I could've used JavaScript's Math.random()function as the base and generate output in pseudorandom numbers like I have in earlier articles (see Multiplication Chart - Code Your Own Times Table).īut this article itself is about generating random numbers.
When I decided to write this article about embedding a random number generator within a web page, I had a choice to make. The Linear Congruential Generator is one of the oldest and best-known PRNG algorithms.Īs for random number generator algorithms that are executable by computers, they date back as early as the 1940s and 50s (the Middle-square method and Lehmer generator, for example) and continue to be written today ( Xoroshiro128+, Squares RNG, and more). Or using more programming friendly syntax: X n = (a * X n-1 + b) % m.Įach of these members have to satisfy the following conditions: Given an initial seed X 0 and integer parameters a as the multiplier, b as the increment, and m as the modulus, the generator is defined by the linear relation: X n ≡ (aX n-1 + b)mod m.
This generator produces a series of pseudorandom numbers.
This helps a great deal in code testing, for example. Because of their deterministic nature, they are useful when you need to replay a sequence of random events. Let's compare some aspects of true random number generators or TRNGs and pseudorandom number generators or PRNGs. Random number generators of this type are frequently called Pseudorandom number generators and, as a result, output Pseudorandom Numbers.Įven though this type of generator typically doesn't gather any data from sources of naturally occurring randomness, such gathering of keys can be made possible when needed. Therefore, if you knew the key value and how the algorithm works, you could reproduce these seemingly random results. Why apparently random? Because the end results obtained are in fact completely determined by an initial value also known as the seed value or key. Photo by Markus Spiske.Īs an alternative to "true" random numbers, the second method of generating random numbers involves computational algorithms that can produce apparently random results. What are Pseudorandom Numbers? Picture of computer code flowing through computer screen. Technically, the hardware part consists of a device that converts energy from one form to another (for example, radiation to an electrical signal), an amplifier, and an analog-to-digital converter to turn the output into a digital number. Thus, random numbers generated based on such randomness are said to be " true" random numbers. Examples include radioactive decay, the photoelectric effect, cosmic background radiation, atmospheric noise (which we will use in this article), and more.
It is measured and adjusted for possible biases due to the measurement process. Such a phenomenon takes place outside of the computer. The first method is based on a physical process, and harvests the source of randomness from some physical phenomenon that is expected to be random.
Let's consider two principal methods used to generate random numbers. Methods for generating random numbers True Random Numbers Picture of analog-input digital-output processing device. Thanks to human ingenuity, we have more powerful tools and methods at our disposal. Yet using dice, coins, or similar media as a random device has its limitations.īecause of the mechanical nature of these techniques, generating large quantities of random numbers requires great deal of time and work. From the lottery in ancient Babylon, to roulette tables in Monte Carlo, to dice games in Vegas, the goal is to leave the end result up to random chance.īut gambling aside, randomness has many uses in science, statistics, cryptography and more. People have been using random numbers for millennia, so the concept isn't new.