About this Project
Programs often need a way to introduce a degree of randomness or unpredictability into their calculations. For example, a game needs to determine where an enemy will spawn, or vary the amount of time it takes before an event occurs. However, software is comprised of numbers and equations - so how can this produce a "random" result?
Simple: it can't.
At least, not by itself. It's possible to generate a truly random series of numbers by sampling from things like atmospheric noise, but this can be time consuming and may require special (and potentionally expensive) hardware.
Fortunately, the vast majority of programs will never need a purely random result. For the most part, a method of generating numbers that is reasonably unpredictable is good enough, which leads us to what are known as Pseudo-Random Number Generators, or PRNGs for short.
Most modern programming languages already have one or more PRNGs baked into them, but programmers can always design their own should the need arise.
Order in Chaos is a small study of these different PRNGs. By examining their history, limitations, and common implementations, we can hopefully showcase the strengths and weaknesses of each approach.
Simple: it can't.
At least, not by itself. It's possible to generate a truly random series of numbers by sampling from things like atmospheric noise, but this can be time consuming and may require special (and potentionally expensive) hardware.
Fortunately, the vast majority of programs will never need a purely random result. For the most part, a method of generating numbers that is reasonably unpredictable is good enough, which leads us to what are known as Pseudo-Random Number Generators, or PRNGs for short.
Most modern programming languages already have one or more PRNGs baked into them, but programmers can always design their own should the need arise.
Order in Chaos is a small study of these different PRNGs. By examining their history, limitations, and common implementations, we can hopefully showcase the strengths and weaknesses of each approach.