I've been trying to replicate the damage data behind the histograms such as those used in the SSG article, but I can't replicate the same distribution you've got, so there's probably something I'm overlooking somewhere. My current assumption is that between two consecutive pellets, there are 9 extra P_Random calls (two from horizontal spread, two from vertical spread, three from bloodsplat-or-puff spawning, and the last two from P_DamageMobj. Meaning that if the first pellet uses the RNG value at index 0, then the second uses RNG value at index 10, the third at index 20, and so on until the 20th at index 190. That however gives me a distribution with a result peak at 205 total damage (48/256 probability) whereas the histogram shows a peak at 185 damage with about 18%. If you still have whatever code you've used to get the values I'd like to compare with my monstrous spreadsheet. --Gez (talk) 12:23, 23 February 2017 (CST)

Wow, it's been a while since someone took those seriously.  :>   I have the code, but it is some kind of encoded Mathematica archive, so actually I can't read it myself anymore!  If anyone desperately wants to import it, I'll post it somewhere, but you're probably better off starting from scratch.
What you say makes complete sense, and sounds consistent with my goals at the time.  I do remember getting stuck on the SSG computation: I couldn't determine how many P_Random calls were in the vertical spread.  Perhaps I never actually solved it, and the current version still assumes zero additional calls among the damage (try that first).  I'm no longer surprised when data mistakes linger for a decade, because it is so much work to double-check, and I'd be the first to congratulate you if you replaced my image.    Ryan W (usually gone) 17:31, 23 February 2017 (CST)