Greetings all,
I do not post very often so apologies if I do not get back to you quickly enough. Recently we had a short discussion about Roulette on the Discord. I had begun to question on what kind of strategy is employed to generate the numbers. I was informed that it was a Random Number Generator (RNG). While this is a good standby, it does not accurately simulate the game of roulette. While I understand that using physics to simulate Roulette would be difficult for this game (and its engine), I think we could tune the RNG so that it could provide a decent amount of randomness that it would feel close enough to the actual game.
What I mean from the above is that often I would end up with the same number multiple times within 5 spins. Or as equally unlikely in the real game, the same number back to back. I would like to mention that while I say it is unlikely, it does not mean impossible, however, this occurs with such frequency you can nearly depend upon it as a strategy. Computers are not great at generating random numbers, often if you use the inbuilt Random() function, it will base the number off of the current time, or some variation of cpu clock, making the number easy to predict, or come up with results that are ‘unsatisfying’.
So, how do we fix this? There are a few strategies that could be employed to generate a random number with minimal repeats.
- Seeded
- Omittive
- Generative
- Formulaic
- Selective
Seeded Randomness
When a player sits, generate a random number. When you send the ball into the wheel (generating a random number) multiply it by the seeded number, then divide by the number of players at the table, keep dividing by the number of players until you get a result between 1-38, then flip a coin (random between 0 and 1), to determine if you need to round up or down.
Omittive Randomness
When you send the ball into the wheel, remove all results that have already happened in the last X number of spins. So, for example, the last 5 spins were: 30, 13, 36, 8, 5. So, the next spin will omit those numbers from coming up again. If they do happen, the number is redrawn.
Generative Randomness
Instead of generating a single random number, generate two random numbers. One between 0 and 3, and another between 0 and 9. After the numbers are picked put them together. If the number falls outside 1-38, redraw the second digit.
Formulaic Randomness
Similiar to the seeded randomness, but with much less variables. What you do is take the random number being generated, and multiply it by a random 5 digit prime number. Then divide by 10,000. Then modulo by another number. Take the first two numbers of the result. If that does not fall between 1-38, take the second and third number in the result. Keep doing this until you end up with a number between 1 - 38.
Selective Randomness
This option is all the above. Every time you send the ball into the wheel, it will select a method to choose a random number, then follow that method until a result can be found. Essentially randomly choose the random number generation method.
In summary, the above methods do not simulate the game of roulette, but it does provide random numbers that will not end up repeating too often. So while we are still not closer to simulating roulette, any other person would not realistically be able to determine the difference unless they were closely paying attention.
Thank you for your time,
Sun Djinn Kari