Trying to judge which arena crystal is best for the short term

Malreck04Malreck04 Member Posts: 3,335 ★★★★★
If you were to open a million battlechips worth of crystals a hundred times, the total units would average out and be equal. But no one's doing that, everyone's popping at most a million or a few million at a time.

So I decided to try my hand at some programming, and generated many cases, each of which had a fixed number of battlechips, and drop rates from @DNA3000's last big arena post, and judged which crystal dropped the most units in any particular iteration.

The result I got was surprising(it might be obvious to you, the reader), that the TB dropped the highest amount of units the most number of times. This doesn't make sense to me, cause amounts dropped by each crystal average to be the same value.

There's two possible solutions, I'm understanding the math wrong, or my code is messed up(wouldn't be surprised at that). Consider helping out a fellow Summoner if you have some spare time, and explain to me why I'm wrong, or why the values are the way they are.

Link to code coz entire post would be kinda pointless without it:https://github.com/malreck/mcoc-unit-code-

(Also my first time on github so don't bully me. At this point I'm asking for too much but you've already read so far so I apologize for the horrible variable names and little to no comments)

Comments

  • Scarcity27Scarcity27 Member Posts: 1,906 ★★★★★
    I'd really love to help you out, but I work mostly on Python, so a lot of the code you've written is Greek to me. I can somewhat understand what you were trying to achieve, but if you could elaborate further, either here or through DM, I might be able to help
  • No_oneukNo_oneuk Member Posts: 1,430 ★★★★★
    You really don't need to run simulations for this kind of thing. The drop rates are exactly the same.

    If you need 15 units right now, you have a better chance at getting that 15 units from the small crystals. If you don't need units right now, you save time by opening the biggest crystals. It's pretty easy to understand.
  • SummonerNRSummonerNR Member, Guardian Posts: 14,045 Guardian
    (quote) “TB dropped the highest amount of units the most number of times“

    Clarification is needed as to what exactly do you mean (and potentially mixing up 2 different aspects into a single statement (?)

    “highest amount of units” - Yes, well because it is the 25x multiplier (cost/reward) crystal, obviously gives (per crystal) a higher Unit amount per occurrence from the normal or UC crystals (but I’ll assume that is not what you mean).
    vs “most number of times” - well, that should actually be the same rate no matter which crystal.

    Or do you mean that TB has been yielding a higher percentage of time as the higher of the 2 potential Unit drops (the 3x Units compared to that crystal's more common 1x Units) ?
    RE: the fixed “Units” chance rate compared to the breakdown within that of whether it is 1x vs 3x units.
  • QfuryQfury Member Posts: 1,860 ★★★★★
    I've been popping 1 UC at time recently and they've been very generous...




    Before this was back to back to back 75 units
  • BitterSteelBitterSteel Member Posts: 9,264 ★★★★★
    All it is, is the higher the title of the crystal you open, the more variation you get.

    If you open more crystals with fewer rewards (I.e. normal arena crystals), the closer to the average you’re likely to get. You’re less likely to get max rewards, but you’re less likely to get non rewards.

    If you open fewer crystals with more rewards (I.e TB arena crystals), the results can be more likely to lean to either way above average, or way below average.

    Imagine Warlock’s sp2 vs Cap IW sp2. Say you could guarantee that they did the same amount of max damage. E.g. each special did 100k damage if every hit crits.

    Warlock’s special has 10 hits, so each one has a chance to crit. It’s quite unlikely for every hit to crit, so you have a lower chance to get max damage. But it’s also quite unlikely for no hits to crit, so you have a lower chance for min damage.

    When you take Cap IW’s sp2 however. You have a much greater variation. If your one hit crits, then you get max damage and it’s amazing. But if you don’t crit, then you get min damage. It’s high risk, high reward.

    It’s the same concept here with crystals. If you open 5 arena crystals, you are likely to tend to the average. Not super likely to get units out of all 10, but equally, not super likely to get units out of none. When you open 1 UC crystals however, if you get units, you win big, but you’re less likely to come out of it with something.

    It’s all about if you want to go for high risk, high reward, or get yourself more likely to come out of it with something.

    Either way, on average you’ll get the same over time
  • Malreck04Malreck04 Member Posts: 3,335 ★★★★★

    I'd really love to help you out, but I work mostly on Python, so a lot of the code you've written is Greek to me. I can somewhat understand what you were trying to achieve, but if you could elaborate further, either here or through DM, I might be able to help

    I'll do a quick break down here, so others can also have a glance

    1)Initialized several variables for battlechips, number of crystals, some counters
    2)Made an outer loop that iterates through the z simulations
    3)Outer loop contains three loops, each of which finds the number of units gained from a million battlechips' worth of normal, UC and TB crystals respectively. I've done this computation with a uniformly distributed random number generator and probability weights from DNA's post. At the end of each of these three loops I've added to a cumulative total counter to get avg at the end.
    4)After the third inner loop, I've used the ternary operator in java to calculate which of the three crystals gave the highest no. of units(only when three unit drops were distinct) in that iteration, and added one to the corresponding counter.
    5)Displayed everything outside the outer loop.

    @Scarcity27
  • Scarcity27Scarcity27 Member Posts: 1,906 ★★★★★
    Malreck04 said:

    I'd really love to help you out, but I work mostly on Python, so a lot of the code you've written is Greek to me. I can somewhat understand what you were trying to achieve, but if you could elaborate further, either here or through DM, I might be able to help

    I'll do a quick break down here, so others can also have a glance

    1)Initialized several variables for battlechips, number of crystals, some counters
    2)Made an outer loop that iterates through the z simulations
    3)Outer loop contains three loops, each of which finds the number of units gained from a million battlechips' worth of normal, UC and TB crystals respectively. I've done this computation with a uniformly distributed random number generator and probability weights from DNA's post. At the end of each of these three loops I've added to a cumulative total counter to get avg at the end.
    4)After the third inner loop, I've used the ternary operator in java to calculate which of the three crystals gave the highest no. of units(only when three unit drops were distinct) in that iteration, and added one to the corresponding counter.
    5)Displayed everything outside the outer loop.

    @ Scarcity27
    Ok so, some questions:
    Have you taken into account the number of units, or just the frequency?
    Does TB give the most frequent unit drops, or the highest total amount?
    How may times did you run the code?
  • Malreck04Malreck04 Member Posts: 3,335 ★★★★★

    (quote) “TB dropped the highest amount of units the most number of times“

    Clarification is needed as to what exactly do you mean (and potentially mixing up 2 different aspects into a single statement (?)

    “highest amount of units” - Yes, well because it is the 25x multiplier (cost/reward) crystal, obviously gives (per crystal) a higher Unit amount per occurrence from the normal or UC crystals (but I’ll assume that is not what you mean).
    vs “most number of times” - well, that should actually be the same rate no matter which crystal.

    Or do you mean that TB has been yielding a higher percentage of time as the higher of the 2 potential Unit drops (the 3x Units compared to that crystal's more common 1x Units) ?
    RE: the fixed “Units” chance rate compared to the breakdown within that of whether it is 1x vs 3x units.

    I guess I meant, the TB crystals gave the highest no. of units per million battlechips, as compared to normal and UC's, the most number of times. Like for example in ten sims TB gave the highest units in 5, UC in 3 and Normal in 2. @SummonerNR
  • Malreck04Malreck04 Member Posts: 3,335 ★★★★★

    Malreck04 said:

    I'd really love to help you out, but I work mostly on Python, so a lot of the code you've written is Greek to me. I can somewhat understand what you were trying to achieve, but if you could elaborate further, either here or through DM, I might be able to help

    I'll do a quick break down here, so others can also have a glance

    1)Initialized several variables for battlechips, number of crystals, some counters
    2)Made an outer loop that iterates through the z simulations
    3)Outer loop contains three loops, each of which finds the number of units gained from a million battlechips' worth of normal, UC and TB crystals respectively. I've done this computation with a uniformly distributed random number generator and probability weights from DNA's post. At the end of each of these three loops I've added to a cumulative total counter to get avg at the end.
    4)After the third inner loop, I've used the ternary operator in java to calculate which of the three crystals gave the highest no. of units(only when three unit drops were distinct) in that iteration, and added one to the corresponding counter.
    5)Displayed everything outside the outer loop.

    @ Scarcity27
    Ok so, some questions:
    Have you taken into account the number of units, or just the frequency?
    Does TB give the most frequent unit drops, or the highest total amount?
    How may times did you run the code?
    1) I did find the total units, but did not save the values for individual iterations. And thats the thing, I got the averages by dividing by z, so if I multiply it back the unit totals are roughly the same for the total no. of iterations.

    2)From 1), total amounts are roughly the same. If we compare the values of units given by the three types in any iteration, TB gives the highest amount of units most often.

    3)Admittedly, a few times. I did consider making another loop but I kind of stopped understanding what I was doing at that point.

    Also don't feel offended when I don't reply for a while now, it's just bedtime here.
  • Scarcity27Scarcity27 Member Posts: 1,906 ★★★★★
    Malreck04 said:

    Malreck04 said:

    I'd really love to help you out, but I work mostly on Python, so a lot of the code you've written is Greek to me. I can somewhat understand what you were trying to achieve, but if you could elaborate further, either here or through DM, I might be able to help

    I'll do a quick break down here, so others can also have a glance

    1)Initialized several variables for battlechips, number of crystals, some counters
    2)Made an outer loop that iterates through the z simulations
    3)Outer loop contains three loops, each of which finds the number of units gained from a million battlechips' worth of normal, UC and TB crystals respectively. I've done this computation with a uniformly distributed random number generator and probability weights from DNA's post. At the end of each of these three loops I've added to a cumulative total counter to get avg at the end.
    4)After the third inner loop, I've used the ternary operator in java to calculate which of the three crystals gave the highest no. of units(only when three unit drops were distinct) in that iteration, and added one to the corresponding counter.
    5)Displayed everything outside the outer loop.

    @ Scarcity27
    Ok so, some questions:
    Have you taken into account the number of units, or just the frequency?
    Does TB give the most frequent unit drops, or the highest total amount?
    How may times did you run the code?
    1) I did find the total units, but did not save the values for individual iterations. And thats the thing, I got the averages by dividing by z, so if I multiply it back the unit totals are roughly the same for the total no. of iterations.

    2)From 1), total amounts are roughly the same. If we compare the values of units given by the three types in any iteration, TB gives the highest amount of units most often.

    3)Admittedly, a few times. I did consider making another loop but I kind of stopped understanding what I was doing at that point.

    Also don't feel offended when I don't reply for a while now, it's just bedtime here.
    I might try making a code myself, using just the drop rates.
    It's pretty late here too, I'll give it a go in the morning (when I can think of a method to write a code that doesn't involve 100 lines of nonsense)
  • SummonerNRSummonerNR Member, Guardian Posts: 14,045 Guardian
    So this is just simulation ?
    Well, let’s say you’ve programmed in an overall 15% drop rate for any type of Units.
    And then within that you programmed it to be a 70/30% split between the lower/higher actual amount of Units (think @DNA3000 analysis was somewhere between 27% and 33% as to what he was seeing for the higher versus just the lower of the 2 Units types).

    Your outcome over large enough simulations can only ever tend toward what the inputs were programmed to be. They can’t yield something that is out of bounds from that.

    The results of the simulation may not match real-life in the game anyways, since we don’t actually have the real percentages/code that they use for the game, and are only guessing based on very large sample openings.
Sign In or Register to comment.