If I have a game that has a know distribution of outcomes, for example,

  • 5% of the time the outcome is 0
  • 10% of the time the outcome is 1
  • 15% of the time the outcome is 5
  • 8% of the time the outcome is 10
  • 62% of the time the outcome is -1

The expected value of the game is 1.03.

I am trying to figure out, given N trials (say 500), what % of the time will the result be above or below a given value.

For example, what % of 500 game trials will the result be negative?

My background is computer science, not statistics. I could easily write a simulator to figure this out, but I am trying to learn other methods, and this seems like something that would be easy to do with excel.


Here are three reasonably doable approaches:

  • you could do numerical convolution, e.g. via fast Fourier transform

  • With a large sample size like 500 you could use a normal approximation

  • you could do simulation (as you mention)

Here's a quick simulation, done in R:


(increasing that to 100000 simulations still only takes about 3 seconds to run on my laptop)

Now look at a normal Q-Q plot of the outcomes. If the outcome is close to normal with mean $1.03\times 500$ and standard deviation $3.377736\times \sqrt{500}$ (i.e. the population mean and standard deviation), this should look close to straight and sit around the red line (which marks the normal approximation):

normal QQ plot of 10000 replicates of a sum of 500 trials

That's about what it should look like if the outcome were actually normal. It looks like the normal approximation will be quite adequate for this case, except in cases where you require high accuracy many standard deviations from the mean.

[For example, while you could correctly discern that negative outcomes will be astronomically unlikely, the actual value for the probability you'd get from the normal approximation (several trillionths) will not necessarily be accurate; it might be out by several orders of magnitude. If you need tail bounds, naturally that would be a different question.]

  • $\begingroup$ Hmm. I wonder if shifting everything right 1 unit and taking a zero-inflated normal approximation (for which the cdf of the convolution is a straightforward sum of terms) might do a bit better somewhat further into the left tail while still being easier/quicker to evaluate than the convolution. Naturally the corresponding evaluation points also shift right. $\endgroup$ – Glen_b -Reinstate Monica Feb 17 at 15:40
  • $\begingroup$ Thanks for this. I went ahead a did a simulation. In the real-world problem I was trying to solve the standard deviation was much higher, and as you pointed out, it only takes a few seconds to execute. $\endgroup$ – jopke Feb 17 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.