How Alex’s algorithm might work (5)

< >

Using a random number in "an easy to exploit" way
Let’s now assume that there was a 64-bit RNG state in use. How do you use a 64-bit number to deterministically stop 5 reels by 50 symbols each? The easiest approach which preserves uniformity would be the following:

Pos1 = RND modulo 50
Pos2 = (RND / 50) modulo 50
Pos3 = (RND / (50*50)) modulo 50
Pos4 = (RND / (50*50*50)) modulo 50
Pos5 = (RND / (50*50*50*50)) modulo 50

Each reel now uses its share of a random number, and there are no correlations between the individual reels. As long as the random numbers are uniform, then there is a uniform chance of any possible outcome of the game. Therefore, the regulator approves.

Let's see next the exploitation of the RNG:

If you know the positions of the reels, you can easily calculate the end of a random number (RND mod 50^5):

RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50*50

Will this help you guess the current state of the RNG? Actually, it will help a lot.

Now you don't need to simulate all possible random numbers, but only those that end with the value of RndEnd. That is, all random numbers that match the pattern RndEnd + X * 50^5:

1 * 312500000 + RndEnd
2 * 312500000 + RndEnd
3 * 312500000 + RndEnd
...

So out of 2^64 possible values (1846674407370955161616), only 59029581035 will have to be tested. Both are a huge amount of possible values, but while on an ordinary laptop the simulation of the first would take 544 years, the simulation of the second would be complete in 60 seconds.

In other words, the random number is now known and future rotations can be predicted.

The actual RNG exploitation used by Alex could be different, but possibly has much in common with the process described above.