There is a concept in simulation design called “Repeatable Randomness”. It is a way to get random inputs, but then to repeat those random inputs in the future if needed. It’s used to see what effects changes to a simulation have to the final effect.
For example:
(Shamelessly stolen from a Mythbusters episode). Is one big snake queue for multiple check-outs faster than individual queues for each check-out register? The first simulation would have an individual queue and a random function would generate customers and shopping carts. This simulation would be run 10,000 times and the final numbers would give average wait time per customer.
Then the simulation would be changed to the big queue and re-run. If we used a new random string of numbers to generate customers and carts, there is a chance that we’d hit a random section that would be very high or very low and wouldn’t balance out the differences. This would give us skewed results. To prevent this, we would re-run the same 10,000 numbers as the first simulation. Therefore we got “random, yet repeatable”
Since generating random numbers is one of the most costly things a CPU can do, this concept is used often in programming to reduce processor load. I believe this is what the Devs are using to prevent the cheat mentioned elsewhere in this thread. The random numbers for each draw type is pre-determined. They are still random, but it doesn’t matter which device you pull from. Your first draw is going to be the first number in that list. The second, will be the second number, and so on. If you exit a device before it syncs with the server, then that list doesn’t get updated to move to the next number.
That begs the question: is it one big list for all token pulls, or is there a separate list for each type? The way to test the next time someone opens the game on a device and sees that their last token pull has rolled back… DO NOT OPEN IT. Play until you get another token of a different type, open that token, then go back to the original token and open it. If you get something different, then the random number list is one giant list for all tokens. If you get the same thing, then it is per type.
If the random number list is per token, the next question is “Is the random number list just a list of numbers or is it a list of covers?” To test that, wait until you find a token roll back, note the cover you had drawn, wait for the draw pool to change (i.e.: a new cover is released for that draw pool that changes the rewards you can get) and see if you get something different. This would be easiest to do with the Taco Tokens. Note the position in the vault of the cover you received (i.e.: if you got the legendary token, that is in position #1. The 



cover for this week’s Crash event, is in #2, the other 



is in #3, etc…). Wait for a mis-sync where you rolled back your draw again, then save the token until the vault changes. Once it changes, spend the token again and see if you get the cover in the same position in the vault, or if you get something entirely new (note: there is a 1 in 300 chance you’ll draw the same cover any ways, so this might take a few attempts to verify).
This will let us know if the number strings are per token event or whether the random list of numbers are re-calculated every time the rewards change.