If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

A lesson in the negative binomial probability distribution

One of the biggest complaints I see all the time on the trove forums is about the random number generator (RNG).

I have a doctorate degree in statistics (emphasis in data mining + machine learning) and have been a teaching assistant and instructor for statistics classes and have learned that almost everyone doesn't know anything about statistics. The people who have taken introduction to statistics may memorize formulas, but most of their intuition is still not developed to properly use the information. This post is meant to educate players, developers, and anyone else who is interested about statistics and how it applies to RNG.

With the recent patch regarding dragon fragments and the many dragons, RNG is once again a hot topic. But this topic has always been hot because of primordial dragon eggs, decent gem drop rates, etc...

There are two main complaints about RNG,

1) Length it takes to complete a task (E.G. collect a primordial dragon egg)
2) The instability of RNG (how some players may have 6 primordial dragon eggs and how some players have none even though they opened the same amount of empowered gem boxes).

Both of these concepts relate to a probability distribution: negative binomial distribution.

To understand the negative binomial distribution, a quick summary of the binomial distribution is needed.

Binomial distribution: "n" independent trials with a probability of "p" to be a success. Everything in trove is based off the binomial distribution when it comes to RNG. For example, If I mine 1000 glacial blocks, there is some probability of getting a fragment. The number of trials is 1000 and the probability of getting a fragment is "p". The probability of "p" is unknown and typically estimated, but different probability curves can be calculated using many different values of "p".

Now the important distribution: negative binomial distribution. The negative binomial distribution uses two parameters, "p" which is the probability of success exactly as defined in the binomial distribution and "r" which is the number of desired successes. If you want to get 5 ice dragon fragments, then "r" = 5. The negative binomial distribution is calculating the probability for the number of trials "n" before you have "r" successes. If we knew the probability of the drop rate, we can see the distribution curve and calculate all the probabilities of getting 5 dragon fragments within "n" trials Using these parameters, the mean and variance of the probability distribution can be calculated.

What is the mean and variance? The mean relates to the length at which a task is expected to take (answers question 1) until it is accomplished and the variance relates to the stability of the task (answers question 2). A lower mean is interpreted as less trials are needed to complete the task, a lower variance means the stability of the task is increased (trove people will be completing the task about the same number of trials).

Let me iterate because using these concepts, RNG is not bad. RNG is used in almost every game possible. What is bad is the implementation of RNG and this can be adjusted according to those two questions.

Let's look at the mean and variance formula for the negative binomial distribution, there are variations of this formula depending on the specific formula of the negative binomial.

mean (lower means shorter) = r*((1-p) / p + 1)

variance = r * (1-p)/(p^2)

These formulas are very intuitive. If we only need 1 dragon egg fragment and the probability of success if p = 0.5, the mean is equal to 2 which means it'll take 2 trials on average to get the 1 dragon egg.

If we only need 1 dragon egg fragment and the probability of success is p = 1/3, the mean is equal to 3 which means it'll take 3 trials on average to get the 1 dragon egg.

We see an inverse relationship, as p decreases (like in the two examples) then the number of trials increases which is very intuitive. I'm sure trove developers and all of us knows this, but what is more important is the variance because it relates to the stability of RNG.

If r = 1, p = 0.5, then the variance is 2
If r = 1, p = 1/3, then the variance is 6
If r = 1, p = 1/6 then the variance is 30

Using these formula, it's clear that as the probability decreases, the instability of RNG increases at a quadratic rate. This is the problem with time gated content such as diamond dragon eggs, the probability of getting a diamond dragon egg is ridiculously low and we only get a limited number of trials, the stability of this RNG is not only unstable, but only have a limited number of trials per week.

How is this information useful? This is the key concept of this entire thread. If you don't read or understand anything, then read this paragraph. Someone suggested earlier in the week to increase the probability of the new dragon fragments by 10 but making it require r = 50 dragon fragments instead of r =5. He suggested this because it'll give us a sense of progression with about the same amount of time, but what was not realized is one very important property happens with this,

Here are the two scenarios:

1) p =p, r = 5
2) p = 10p, r = 50

*A side note, while the means come out to be the same, you can't just take any probability and multiply it by any constant. 10*0.5 = 5 which is not a valid probability.

We see that the variance is decreased by a factor of 10 fold making it much much more stable than the previous scenario even though it's the same amount of time. It seems the biggest problem with RNG implementation in Trove is not necessarily the length of time, but the stability in it and the stability can be fixed by these principles.
------

Bonus section: variance and stability. While in the above section, I talked about the variance and stability but haven't shown the exact relationship between these two concepts. Using concepts such as the central limit theorem, margin of error, we can relate the variance to the approximate number of trials for a 95% confidence interval. Which means, 95% of trove will get the "r" successes within the interval n = (a,b) (which can be calculated with different values of p). When the variance is reduced by a factor of 10, this will make 95% of trove will get the same exact "r" successes within the interval n = (a/sqrt(10),b/sqrt(10)) or n = (a/3.2,b/3.2). A significant amount of stability is gained.

It actually does explain the speed of the fragments. The problem is not the length of time it takes to get a fragment, but the sense of progression is not there due to the instability of the RNG system.

If you knew that after 8 hours of mining ice fragments you were 100% guaranteed to get a fragment, you may complain a little about the length of time, but you can see the light at the end of the tunnel, it's just a matter of working to get there. Runescape for an example, in the old days it'd take 500+ hours to get a level 99 skill (among 15+ skills). While long, many people did it because it was 100% guaranteed the work they put in would get them that goal. The length of time has little to do with it and it's something trove developers can easily address.

Currently, there is about a 95% chance you'll get the 5 ice fragments within a few days or could take up to a month. You simply don't know and you have to play the odds with the stability of the RNG. Some people will make 4 dragons before you make even one even if everyone spent the same amount of time, simply because of the instability of RNG.

This is the main complaint with the implementation of RNG and the above describes almost the exact math behind it. Trove developers knowing the exact probabilities of dropping, are capable of knowing the exact numbers and where 95% of the trove players will fall when completing these tasks with the right tools.

I think to most other games, and as I'm primarily someone who plays single player games, I'll use those as an example. When playing a single player game, you know the end goal and you know that once you complete an action, you'll achieve that goal. Whether it's to upgrade your weapons and armor in Fallout 4 or progress to the next mission in Metal Gear Solid 5, you know that once you complete A you'll receive B.

Trove sometimes works like this, and when it does it's amazing, but most of the time you complete A and receive...nothing. Then you complete A 456,678 more times and still receive...nothing. Rewards are an excellent motivator, but this system serves as more of a deterrent.

RNG sucks as a main path to improve your character in a game as it does not reward hardwork or skill.

Ok 2 sentences

Sometimes you win the loto and sometimes your wishing the winner gg but under you breath your saying WTH I deserve this more then them...

This summarizes my post, but my post takes the additional step to quantify the stability of the RNG system. I have posted the sentences you have posted for years after every update, but unless you take the extra effort to quantify the stability of the RNG system, it's not useful.

The reason why I took the time to post the above is because the developers fully know if they want to make something longer, decrease the probability of it happening. However, they seem to be completely oblivious about the stability of the RNG system. Usually it takes months if not almost a year until they realize that their RNG system is unstable and they implement something to fix it. And there is absolutely no need to let the experienced and dedicated players suffer first before fixing a system.

The post above shows that by multiplying the probability of a drop by 10 and and making 10 times more fragments, the average length of time to complete the task will be the same but people aren't wondering, "is it going to take a couple days or is it going to take a month" (or the unlucky trove player, maybe 2 months), instead they will be wondering, "is it going to take a week or two weeks" which is infinitely better implementation of RNG than what is there currently because it still gives the feeling of randomness but at not such ridiculous degree.

I think some people undermine the time it takes to get the fragments. Yes an increased drop rate and requirement will feel like you're making progress, but at the same time they very nature of the grind itself will still be demoralising.

It's like instead of getting paid once a year at an unknown date for $1200 for full time work, getting paid each month will feel a lot better for most of the time. While true that a monthly wage is more convenient in case of emergencies and stuff like food, you're still only getting paid $120 a month.

Please correct me if i'm wrong but my guess is that currently RNG is not calculated as a whole dynamic statistic and most probably it is simply calculated on the spot without any previous information.

For example, imagine the devs decide that when you open an emp gem box, you have .1% chance (made up number) of it being a DDE so every time you open an emp gem box there is no change, it is always .1% chance.

In an ideal RNG world, your chance of getting a DDE would dynamically change every time you open an EMP gem box until eventually everyone is able to get one so your chance varies depending on previous results.

I think some people undermine the time it takes to get the fragments. Yes an increased drop rate and requirement will feel like you're making progress, but at the same time they very nature of the grind itself will still be demoralising.

This is part of it, but their current implementation of RNG means will you be grinding for a day or will you be grinding for a month. I fully welcome RNG, it is essential for all games, I truly believe there should be variation as it contributes to the experience. But for dragon eggs as an example, I didn't get my first dragon egg within almost 9-10 months and by that time people have gotten over 4 and we opened similar number of boxes. I was placing on the top 25 of the leader boards since MOP until I realized I was unlucky and I had simply had no chance of catching up. The people who got lucky not only became more stronger from the dragons, but the were forever ahead at getting contest rewards, making more flux, and using the flux to stay ahead.

Originally Posted by Jsm

I think some people are missing the point.

Please correct me if i'm wrong but my guess is that currently RNG is not calculated as a whole dynamic statistic and most probably it is simply calculated on the spot without any previous information.

For example, imagine the devs decide that when you open an emp gem box, you have .1% chance (made up number) of it being a DDE so every time you open an emp gem box there is no change, it is always .1% chance.

In an ideal RNG world, your chance of getting a DDE would dynamically change every time you open an EMP gem box until eventually everyone is able to get one so your chance varies depending on previous results.

I think that is what it is...

This is part of it too. Dynamic RNG is really easy to do to using logistic regression and is often done in many games. For example, if you have an unlucky streak of empowered gem boxes, it's ridiculously easy to use logistic regression to increase the odds until you get a diamond dragon egg. Regression can correlate effects such as that and the logistic part maps it to probabilities.

But the important point is how you compare to other players. I fully support variation in rewards that some players may get lucky and some players will not get lucky. This is essential to almost any game and gives many good feelings when you are a lucky player. But currently the distance between lucky and unlucky is too large. I got 2 diamond dragon eggs within 70 boxes where my first diamond dragon egg took about 300-400 boxes. This instability makes lucky and unlucky players too far apart from each other.