Simply dividing the number of successful drops by the number of drops will give you a proportion. For example, 20 successful drops out of 100 drops is a 20% chance of getting the successful drop. This is the sample proportion.
You are correct that you will have to do it over and over, as any statistics you calculate are based on the sample, and you cannot have 100% confidence in them. You can, however, repeat it enough times to get a confidence level of 95%, 99%, etc. Also, if you know that the developers have a tendency to use nice numbers in their drops (1/32, 1/64, 1/2048, etc), you could use that to have more confidence in your answer.
This is assuming a few things, however:
- All drops are independent of each other. For example, in the game Overwatch, the odds of receiving the rarest tier of item increases every time you do not receive one. This would already be hard to calculate. Now imagine a system where each tier of item may add or remove the cumulative probability of the good drop. Calculating the percentage begins to border on impossible when you know less and less about the system.
- All drops are simply based on a drop percentage. For example, in the game Runescape, enemies may have a chance of dropping from the Rare Drop Table, as well as their own drop table. Some rare drops are shared by the enemy's drop table, as well as 'no drop' being shared by both, so without knowing the RDT's rate for that enemy it will be incredibly difficult to predict drop rates to a good confidence level. Other factors may include number of players attacking, items equipped (e.g Runescape's Ring of Wealth), or anything else the developer wants.
You should be able to perform a sample proportion confidence interval, that reads something like "I have 95% confidence that the drop rate lies between 0.79 and 0.81", where your sample proportion would have been 0.80 (in the middle). If this is a bit much effort, just use your sample proportion for a good estimate once you're happy that it's stable. At the end of the day, even if you eventually calculate that probability to be 0.5%, the drop rate doesn't guarantee a drop every 200 kills. Even with 2000 kills, the probability of receiving exactly 10 drops is 12.5%.
Answer from LloydTao on Stack ExchangeVideos
Hello,
I've played some games over the time and people always complain on their drop rate or RNG luck.
What is the real difference and how can i explaine someone the difference?
Let me try to go through all your questions in turn.
1. Checking whether or not a drop occurs given a certain drop chance
Just use a pseudo-random number generator and compare the result with the drop chance, just as you suggested in your question. For example, if you specify the drop chance in percentage points with up to two decimal places, you could ask
rand = generatePseudoRandomNumber(0, 10000) // between 0 and 10,000
if(rand <= dropChance * 100)
2. Checking which events happens given a set of possible events
Try to use a data structure that is more flexible than hard-coded switch expressions. I coded a basic version of a Lottery class here: https://gist.github.com/3368046. Lottery allows you to do stuff like this:
$Lottery = new Lottery();
$Lottery->addEntry($item1, $dropChanceOfItem1);
$Lottery->addEntry($item2, $dropChanceOfItem2);
$Lottery->addEntry($item3, $dropChanceOfItem3);
$drop = $Lottery->getWinner();
With my implementation, the drop chances do not even have to add up to 100%; the lottery determines the winner based on the number of lots that each participant has in relation to the other participants of the lottery.
3. When to check for drops and how to communicate the result to the player
I'd decide based on what the most critical bottleneck is: If bandwidth is expensive and if your service has a good latency (Amazon?), go for variant 1. If your service has latency issues, go for 2.
Yes, you take each percentage and map it to one or more numbers in that range. E.g. if there's 50% chance of getting a killer rabbit, and 20% chance of getting John Lennon glasses, and 30% of getting chainsaw fuel, then you would have 1...50 be the range for the rabbit, 51...70 for the glasses, and 71...100 for the fuel.
Now you generate a random number (e.g. using rand() or whatever your language offers, limiting it to 1...100 using 1 +(rand() % (100-1)), and depending on what range it falls in, you know what to drop.
Now this only gives you a single item. To get several items, you just draw several times*. So you'd be guaranteed to get one of the three above items from draw one, and one of four other smaller items from draw 2. You can even have draws where one of the items that can drop is "nothing". So to have a 2% chance of this dropping the Super Mega Ultra Grooveshark(tm), you'd have range 1-2 be the shark, and 3 to 100 "nothing" and just do an extra draw (generate another random number between 1 and 100) with that.
So your data structure would probably be a list of draws containing a list of items and their percentages, one of which could be a "nothing" item. Then your items (e.g. enemies) would simply reference one of those data structures as their "drop this when I die" structure.
*) Of course, if you want to always drop two items together, you may need to define some sort of "box" item that just contains those to items, then just draw once to get those two.
The drop rate numbers can be a bit confusing without understanding the math behind them. Digging into it helped me understand it a bit more and get much less frustrated.
Note: This is not a commentary on how the mechanics should work - just how the odds work out. I’m not saying you can’t be upset when you’re at 7x the drop rate and still haven’t gotten it. Just showing the odds within the current system. I’m not against a rework of how drops work. Also, On mobile you may need to scroll the tables
TL;DR for those that don't care about the math explanation:
* 1x rolls for a 1/x drop is about 63% (Both 100kc at 1/100 and 1000kc at 1/1000 is about 63%)
* 4.5x rolls for a 1/x drop is about 99%
* 7x is for a 1/x drop is 99.9%
* For 200,000 players, if they all rolled 7x, *statistically* that would mean 200 players would still not have the drop. (99.9% of players would have the drop, 0.1% would not)
Rate Table:
Rows are the drop rate, columns are the amount of KC. So 1x KC for a 1/100 is 100 and 4.5x is 450KC
| Drop Rate | 1x | 2x | 4.5x | 7x | 12x |
|---|---|---|---|---|---|
| 1/1 | 100.00% | 100.00% | 100.00% | 100.00% | 100.0 |
| 1/2 | 75.00% | 93.75% | 99.80% | 99.99% | 100.00% |
| 1/3 | 70.37% | 90.70% | 99.49% | 99.98% | 100.00% |
| 1/4 | 68.36% | 87.54% | 99.44% | 99.97% | 99.99% |
| 1/5 | 67.23% | 86.49% | 99.26% | 99.96% | 99.99% |
| 1/10 | 63.21% | 86.86% | 98.89% | 99.91% | 99.99% |
| 1/50 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/100 | 63.40% | 86.89% | 98.91% | 99.91% | 99.99% |
| 1/200 | 63.30% | 86.89% | 98.90% | 99.91% | 99.99% |
| 1/300 | 63.27% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/400 | 63.25% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/500 | 63.25% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/1000 | 63.23% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/2000 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/3000 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/4000 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/5000 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/32768 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
| 1/50960 | 63.21% | 86.89% | 98.89% | 99.91% | 99.99% |
The Math:
Over simplified: You flip a coin. There is a 1/2 chance of getting heads every time you flip it. But if you look at it in a series:
I flip a coin and get tails, that 50% chance of heads on that first flip is gone
On the second flip I flipping with the remaining 50%, so 50% of that is 25%
The third flip I have 50% chance with the remaining 25%, so that's 12.5%
First Flip: 100/2 = 50
Second Flip: 50/2 = 25
Third Flip: 25/2 = 12.5
50+25+12.5= 87.5%
I think understanding these makes think less frustrating in general, because when you have 3000KC for that 1/3000 pet, it can feel like you should have it by now. But even at 6000 KC you only have about 86% chance. That would mean about 27000 players would not have gotten the drop by then. It's still frustrating, but at least you know you're not losing what feels like it should be >100% chance.
Bonus Table:
This is how many player statistically would not have gotten the drop out of 200,000 players.
| Drop Rate | 1x | 2x | 4.5x | 7x | 12x |
|---|---|---|---|---|---|
| 1/1 | 0 | 0 | 0 | 0 | 0 |
| 1/2 | 50000 | 12500 | 390 | 12 | 0 |
| 1/3 | 59259 | 18518 | 1027 | 40 | 0 |
| 1/4 | 63281 | 25312 | 1127 | 63 | 0 |
| 1/5 | 65536 | 31129 | 1475 | 81 | 0 |
| 1/10 | 73679 | 46842 | 2230 | 170 | 0 |
| 1/50 | 73579 | 46676 | 2231 | 171 | 0 |
| 1/100 | 73400 | 46620 | 2231 | 171 | 0 |
| 1/200 | 73300 | 46580 | 2230 | 171 | 0 |
| 1/300 | 73271 | 46552 | 2230 | 171 | 0 |
| 1/400 | 73251 | 46546 | 2230 | 171 | 0 |
| 1/500 | 73251 | 46545 | 2230 | 171 | 0 |
| 1/1000 | 73230 | 46545 | 2230 | 171 | 0 |
| 1/2000 | 73221 | 46545 | 2230 | 171 | 0 |
| 1/3000 | 73221 | 46545 | 2230 | 171 | 0 |
| 1/4000 | 73221 | 46545 | 2230 | 171 | 0 |
| 1/5000 | 73221 | 46545 | 2230 | 171 | 0 |
| 1/32768 | 73221 | 46545 | 2230 | 171 | 0 |
| 1/50960 | 73221 | 46545 | 2230 | 171 | 0 |
Spoon Drop Table:
Someone asked for the chance of getting spooned in the comments, so figured I'd add it here.
| Drop Rate | 1/2x | 1/4x | 1/8x | 1/10x | 1/20x | 1/50x | 1/100x |
|---|---|---|---|---|---|---|---|
| 1/2 | 37.50000 | ||||||
| 1/3 | 35.18500 | ||||||
| 1/4 | 34.18000 | 17.09000 | |||||
| 1/5 | 33.61500 | 16.80750 | |||||
| 1/10 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | |||
| 1/50 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | |
| 1/100 | 31.70000 | 15.85000 | 7.92500 | 6.34000 | 3.17000 | 1.26800 | 0.63400 |
| 1/200 | 31.65000 | 15.82500 | 7.91250 | 6.33000 | 3.16500 | 1.26600 | 0.63300 |
| 1/300 | 31.63500 | 15.81750 | 7.90875 | 6.32700 | 3.16350 | 1.26540 | 0.63270 |
| 1/400 | 31.62500 | 15.81250 | 7.90625 | 6.32500 | 3.16250 | 1.26500 | 0.63250 |
| 1/500 | 31.62500 | 15.81250 | 7.90625 | 6.32500 | 3.16250 | 1.26500 | 0.63250 |
| 1/1000 | 31.61500 | 15.80750 | 7.90375 | 6.32300 | 3.16150 | 1.26460 | 0.63230 |
| 1/2000 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
| 1/3000 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
| 1/4000 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
| 1/5000 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
| 1/32768 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
| 1/50960 | 31.60500 | 15.80250 | 7.90125 | 6.32100 | 3.16050 | 1.26420 | 0.63210 |
I've never really understood the drop rate system....
Currently I'm aiming for the 'Sandy' title and collecting the Insects of the desert.
There are particular one's which have a drop rate to them.
The one im currently aiming for says 1/200 drop rate. What does that even mean? a 1% chance of getting the drop per every 200 done?
If someone can explain it a bit more in depth, it would be great.
As in, I understand it's a percentage, but how does the "game" decide when and if something drops?