![]() | Tl;dr, not so unlucky, it's about 46% chance of getting it. So basically, I took a numerical method course, have finals tomorrow, and decided to play the newest EX2. I got to about 40+ totems, one of the members of my PF is at 85 or something, and got curious: How unlucky is it really if you didn't get the mount before you reach 99 totems. The finals I have tomorrow actually have problems similar to this as one of the topics, so this is now my finals review/chance to post something on Reddit lmao. (This is done on Python with these imports ![]() %matplotlib inline from matplotlib import pyplot as plt import numpy as np import math The thing we learnt in that class is called "Monte Carlo method", sounds like something cool, in reality you just basically simulate a problem so many times the amount of the distribution of events you get is super close to the theoretical distribution. We can model this problem as basically: A roll: you roll 1-99 (assume uniform probability), if anyone else rolls higher than you, you don't get mount. No one can get the same roll. This assumes that all 8 players do not have the mount and rolls need on it. def rolling(ppl, min, max): # get this player's roll ourroll = np.random.randint(min, max) # keep track of rolls, no overlapping rolls prevs = {ourroll} for _ in range(ppl-1): p_roll = np.random.randint(min, max) # if the roll repeats, roll again while p_roll in prevs: p_roll = np.random.randint(min, max) # if their roll is higher, you're cucked if p_roll > ourroll: return False #put their roll in the set of rolls prevs.add(p_roll) return True A clear: Now this is a bit of a problem, since we don't know the *exact* probability that the mount drops. According to a reddit post in the past, it's 1/20, basically 5%. Let's assume that. So if you get that 5% drop, you compete in the roll and see whether you get a mount. def luck_check(totems = 99, ppl = 8, min = 1, max = 100, chance = 0.05): #run totems amount of clears for _ in range(totems): dropping = np.random.uniform() # if it drops, do a rolling if dropping <= chance: if rolling(ppl, min, max): # if you get the roll, no need to play more return True #after totems amount of runs return False A player: clears the EX trial up to 99 times an considers getting a mount if that player gets a mount in any of their clears. If by 99 clears the player still doesn't get the mount, consider that player without a mount. This assumes 0 totem usage by the player. if clears(): mounts += 1 So that's pretty simple to code up. What's left is to just do that in a loop like 100k times or some gigantic number and see how many people out of a 100k gets that mount before hitting 99. Answer: about 46k people gets the mount (rounded down). def sim(iterations = 100000): mounts = 0 # keep track of wins for _ in range(iterations): if clears(): mounts += 1 return mounts #This gives a value that hovers close to 46k So that's it then. We can say that the chance of getting a mount before 99 totems is probably something close to 46k/100k ≈ 46%. That is actually worse than 50%. Enjoy your runs! For those who are actually into statistics, data science, etc etc, you might want to see a bit of a check on the standard deviation of this simulation. I've ran the test about 30 times (it already takes like 5 minutes on my dinky laptop to run 10 simulations on a stupid for loop like this, might employ parallel programming if I want a more robust test, but it's for a damn Reddit post, I ain't gonna do that), and the result is this histogram, with mean = 46228.833333333336 and standard deviation = 135.71811063949994. https://preview.redd.it/sz7n6zcphgc...bp&s=fcb4c7b5876d58ca17770dd0c09396debb78eae5 Feel free to request me any scenarios with EX mount stuffs on this simulator, or if you know coding, could be a fun thing to just do and run. submitted by /u/Perfect-Bit1808 [link] [comments] |
Continue reading...