Overview:
This is a non-deterministic random number generator which uses a combination of a pseudo-random number generator and different entropy sources (server entropy and internet traffic timings)
to produces a random number source that cannot practically be predicted based on previous output. The generator has passed various tests of randomness and there are plans to test it against some other
well-known tests for randomness.
Note that since this generator does make use of a pseudo-random number generator, it would not be a good choice for cryptographic applications.
Randomness:
Two key requirements of randomness are:
- Uniformity: values should appear uniformly across the range of possible values. That is, all possible values have an equal probability of occurring.
This does not mean that there will not be repeated values, but instead that given enough data, the differences in the number of occurrences will not be statistically significant.
- Independence: values should be completely independent from and not related to previous values. That is, there should be no correlation with previous values.
Another way of stating this is that given all previous values, you cannot predict the next value.
This random number generator exhibits both of these requirements of randomness.
Features:
The moving black and white stream of squares at the top provide a visual representation of the random data used to build the random numbers displayed. This sequence of blocks correspond to random bits,
where each bit can have two states of information (black/white in this case). If you click on the sequence it will instead display a sequence of 0's and 1's. When the speed of
the display of these bits exceeds a certain threshold, it is reduced via sampling.
Near the center of the page there are entry fields for determing the range of random values produced. It defaults to a minimum value of 1 and a maximum value of 100 with 0 decimal places.
You can vary this to produce random numbers in a different range. The random numbers produced appear in a moving string of numbers above these entry fields. The most current
value appears in a large font near the top of the page. You can modify the input fields to produce random numbers with a maximum range of 100 trillion.
Values may be negative and may contain a decimal point. Random numbers produced will be in the range from low value to high value inclusive.
Example random number inputs:
Bits are combined to produce random numbers in the range given by the entry fields. For example, for 0 decimal places, if the minimum value selected is 0 and the maximum value selected is 1, then random numbers
between 0 and 1 inclusive are produced, where each random number requires one bit to generate. For a range of 0 to 3, this covers four values and this can be generated by two bits since
the combination of two bits creates four distinct values (00, 01, 10, 11). More bits are needed to cover larger ranges. Also, in general, larger ranges in random numbers will be slower to generate than smaller ranges.
The application starts by automatically producing random numbers.
Clicking on the yellow "Pause" button will stop this until the green "Go" button is clicked. When clicking the "Pause"
button you may notice a slight delay (depending upon the speed) before the random generation stops. This is by design so that the last random number displayed will not be the same one you see when you click the "Pause" button.
This facilitates using this application for games such as "pick a number between 1 and 10", etc by ensuring that the person clicking on the "Pause" button cannot wait until they see a number they want.
NOTE: If you pause processing for long enough, the connection will time out and random number generation will stop. You will need to refresh or reopen the application to begin again in that case.
The "|<<", "<<", ">>", and ">>|" buttons (just under the Pause/Go button) control the speed of random number generation. These buttons correspond to "slowest",
"slower", "faster", and "fastest" respectively.
Below these buttons is information on the current speed (as a percentage from 0 to 100) as well as the average speed in bits per second.
The application defaults to 50% speed generation when first started. It ranges from 0% (slowest speed) to 100% (fastest speed).
It may seem counterintuitive, but 0% does not mean 'stopped', but only that speed generation is at its slowest.
To the left of the Go/Pause button is a "Settings" button (shown as a gear icon). When clicked, this shows a modal dialog of settings. Currently it shows settings associated with writing the
list of random numbers generated to a file on your computer. Checking the checkbox next to "Write Random Number List to file" will display related options. You can set the maximum
count of random numbers to write to the file (up to 5,000). It also shows the current file completion and the number of files written so far.
To the right of the Go/Pause button is a "Help" button (shown as a question mark icon), which displays a modal dialog showing this information you are now reading.
Below the entry fields for the min, max and decimal places of the random number list, there is information shown about the random numbers produced. This includes how many
random numbers have been generated thus far, the average number of bits used to create each random number, and the speed of random number generation in random numbers per second.
Below that, you will see bit-level information. This includes a count of the number of bits generated, and a breakdown of how many 0-bits and 1-bits and their percentages.
After that you will see information about the average random number value thus far as well as the ideal average expected over a large number of random numbers.
The 'Advanced' checkbox displays some additional features. When clicked, just under the random number range entry fields you will see the following checkboxes:
- No Repeats Per Range Cycle... -- checking this causes all the random numbers in the given min to max range to display before starting over again fresh.
The Cycle Completion (as a percentage), Cycle count, and an option to pause after a given number of cycles have completed is displayed when clicked.
Note that the order of the numbers will be different from cycle to cycle.
- Use seed (deterministic)... -- checking this allows you to create a reproducible sequence of random numbers that is deterministic. The sequence produced depends upon the
seed value entered. The same sequence will be produced for the same seed and a different sequence will be produced for different seeds.
- Pause when Rand Cardinality reaches... -- checking this will cause the application to pause once a certain number of random numbers have been generated, as specified in the entry field
that displays once this is checked.
- Enable Bit Bias... -- checking this allows you to specify what percentage of the time (on average) a bit generated will be a 0 and what percentage of the time it will be a 1 (percentage sums to 100%).
This will result in a slower generation of numbers. The default when this checkbox is not checked is to generate bits with a 50%/50% chance of generating 1's and 0's.
- Show Rand Frequency Stats... (along with a Reset button) -- checking this shows frequency information (that runs whether displayed or not) about the random numbers generated.
It shows some statistical info as well as a graph. The graph plots the random numbers generated (in the range of min to max) along the x-axis and the number of occurrences of each
of these random numbers along the y-axis. When the "No Repeats Per Range Cycle..." checkbox is checked, the y-axis value never goes beyond 1 before starting over. When that
checkbox is not checked, there is a range of how often each random number is displayed since each random number always has an equal chance of being produced.
The "Reset All" button near the bottom of the page will cause random number generation and related information (such as counts and percentages, etc) to start over from the beginning.
And finally, there is a "Buy me a coffee" button. Clicking this takes you to a page where you can contribute toward the continuance of this website and my creative endeavors.
Please consider donating. Thanks.
Enjoy!
Visit
www.artbylogic.com