Assembling the final Address for "bitfishing" the next bit in the BFT
The next LCG random number generated / left 16 bit
The last random number generated / last 16 bit
Tranfer FBM3 to FBM4, FBM2 to FBM3, FBM1 to FBM2, new FBM1
The next FBM to be selected
The next BM to be selected
Storing the new BRV
Storing the new FBM1
xoring: 2 times 0 or 1 give "0"
Now one address for selecting (fishing) a random bit from the BFT is completely assembled from 4 different BRVs and we select this bit and add it to the random Number in construction.
The bit we found at this address (see 'BFT-line' below) is a :
New random number under construction:
Before we start our demo, a few words on the six buttons in the right lower corner:
We start automatically with a standard step-time of 1500 milliseconds.
Clicking on the Slower button will increase the time value by 500 ms per click, up to a limit of 4000 ms.
Clicking on the Faster button will decrease the time value from 1500 to 1000 ms, and with additional clicks to 500, 400, 300, 200, 100 and 50 ms.
We come back to 1500 ms with a click on the Standard button.
The step-by-step button allows to freeze the demo in order to have a quiet think. Every click on this button advances the demo to the next step, allowing this way to follow easily the details of the calculation.
A click on the run button leaves the step-by-step mode and goes back to the automatic mode, advancing with the speed selected before entering the step-by-step mode.
A click on the reload button restarts the demo from the beginning.
Supplementary information available on the bitfishing-table BFT, the final address assembling parameter FAAP, the basic randomness value BRV, the feedback modifier FBM, the basic modifier BM and the pseudo random number generator used as motor LCG.
After the generation of two 32-bit random numbers we are now at the end of our demo
We hope that you enjoyed observing the process of "coin-flipping" inside a computer, with six different mixing aggregates to get a perfect 50/50 chance for head (1) or tail (0). Maybe this process seems to be very slow, but in fact we come down to under 100 nanoseconds on an AMD EPYC Zen 2 processor 7702P for 64 bit generation on one core, resulting in a speed of around 650 Megabit per second on one core.
The generation of the first two 32-bit random numbers was the start of a big job (from the third random number on without spectators!) as this core generated 375’999’999’998 additional 32-bit random numbers in a few hours. This file of 12 thousand billion bit was then submitted to the U01 bigcrush test, and the result was: "All tests passed".
First random number: (decimal) 8'168'205 = (binary) 00000000011111001010001100001101
Second random number: (decimal) 982'610'906 = (binary) 00111010100100010111001111011010