RNG and Drop Rate, what is the difference?
game design - Designing Drops system - How and where chance of drops are defined? - Game Development Stack Exchange
probability - How to calculate hidden drop rate percentages in a video game? - Cross Validated
Item drop rate probability in video game
Videos
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.
So my friends and I were doing a raid in Destiny 2 so we could maybe have a chance to get a gun that has a new 10% drop rate. We have 5 people who all have a 10% chance to get it. Someone said theres a 50% chance that at least 1 person gets the gun, which seemed to make sense but I'm not sure. Sorry if this is simple but I thought it was interesting and wanted to know the definite answer. Maybe I'm just overthinking It. Thank you in advance
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.
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 |