The RNG Problem in Tanks

In real-life games, such as Football or Buzkashi, there are a great number of factors that influence the game's outcome. Individual player skill, teamwork, physics, weather conditions, and many other factors all vie to determine victor. Some of these factors—such as a stiff wind in the wrong direction—can even imbalance the contest. Fairness in competition involves neutralizing as many of these imbalancing factors as possible. But what happens if the laws of physics decide not to apply themselves impartially?

Enter the Random Number Generator

There is no choice but to rely on a random number generator of some kind in a computer simulation involving any variable number. While the rules implemented in the game ultimately determine what happens, any factor of randomness has to come from somewhere. Random number generators are programs used to create pseudorandom numbers, and they are at the heart of determining which shots hit, if they penetrate, and anything else involving a range of outcomes that the player can't directly influence. The primary concern in any such generator is just how random the values are. A measure of randomization is important in preventing a series from becoming predictable. This is where math comes in.

It’s how you miss that matters

We can determine, with a little mathematical knowledge, what the chances are for any outcome to happen in a truly random environment. When repeating patterns arise, however, we can also prove that there are flaws in the system itself. I’m not talking about five coming up on rolled dice three times in a row, though. That is perfectly normal even in random systems. In fact, five could come up every time in a sample of arbitrary length and still be perfectly “random.” This is why statistical models typically deal in hundreds of thousands or even millions of trials.

For example, there are exactly 20 Chinese given names and 69 Chinese surnames for crewmen on the NA WoT server as of writing. This is assuming that the name format is westernized. If these names apparently come straight from the RNG without weighting, the chance that a Chinese crewman has the given name Daosheng should be 1:20, and the chance that they have the surname Ji should be 1:69. This is where combinatorics comes in. To use gambling as an example: The chance of a single, balanced 6-sided die roll coming up six is exactly 1:6, and the chance of rolling 2 sixes consecutively is 1:(6x6), or 1:36. To return to the Chinese tank crews, the chance of three given names in a crew coming up Daosheng is 1:(20x20x20) or 1:8000. I have had exactly 3 Chinese tank crewmen named Daosheng, so this begins to look suspicious to me. Perhaps I’m just lucky. This anomaly isn’t proof that something is not right, so let's investigate further.

The chance of getting two Jis on a crew of four is 1:(69*69) or 1:4761. The chance of getting three Daopengs and two Jis is 1:(8000x4761) or approximately 1:38,088,000. At this point, I’m thinking I should play the lottery more often. This is a very specific example, but the math holds for any repeated names, not just Daopeng and Ji. You have the same chances of getting three Feis and two Lis randomly on the same crew. The important part is that they are three-of-four matches on the 1:20 and two-of-four matches on the 1:69. This indicates to me that World of Tanks' RNG is prone to trends. Trends are bad in an RNG.

Combinatorics do make things a little more complex, but it isn't a problem if five comes up three times in a row in a sequence of random numbers between one and ten. The issue is if five keeps coming up three times in a row significantly more often than other numbers do. I’m not concerned that I missed five times in a row. I’m concerned if those five misses all appeared to hit the exact same pixel more than one standard deviation away from center. That’s very unlikely!

Where am I? What Plane/Mech/Tank/Ship am I in?