Using a modded weapon profile with an inverse AOE damage curve starting at 0 damage at the center and increasing linearly with 1 dmg/m to 50 at 50 m allows very convenient measurement of in-game distances between the point of impact of a shot and a given target by simply reading the damage indicator in cheatmod (Fig 1).
Fig 1: "Measurement" of angular scatter using damage numbers in cheatmod
Combined with setting either angular scatter or scatter distance to zero, this allows to directly measure either of these values with great precision (this is a bit more complicated for angular scatter, but with some basic trigonometry the angle can be derived from the distance (i.e. the damage number) by alpha = 2*sin-1(distance/2*range). Now in theory, these numbers should be equally distributed and any deviation from this would be a clear indication that the probability distribution is not flat as per the initial assumption.
However, recording damage numbers can be quite tedious, especially if you have to take an awful to generate a sufficient sample size for statistically relevant results, so an easier way to do this is to take the average damage over n shots by dividing the total damage dealt to an entity by the number of shots fired.
As an example, let's consider a horizontal scatter distance of 10, angular scatter of 0, an inverse damage profile as described above (increasing from 0 with 1 dmg/m) and number of shots n = 100.
The expected average damage dealt over 100 shots should be exactly 5 if every damage number between 0 and 10 is equally likely (flat probability distribution), and slightly lower if shots are more likely to scatter close to the target. However, doing this 25 times in-game (using a sniper model set to 1000 HP for target practice) gives a mean damage of 4.51 +/- 0.239 (2.02 +/- 0.156 for horizontal scatter of 5) instead of the expected 5.
In the same way, the expected mean value for a maximum angular scatter of 10° and horizontal scatter = 0 should be 5°, but the found in-game value is only 4.6 +/- 0.28°.
Clearly an indication something might be off!
To see if the scatter model is somehow wrong I've devised another test based on calculating the hit probability per shot by dividing the area of the AOE cone (for a "flat" AOE profile doing exactly 10 damage from 0 to max AOE range) by the total area of the scatter cone.
Taking a unit with 10 angular and horizontal scatter (scatter offset = 0) the resulting scatter cone has an area of 139.63 m^2.
For an AOE radius of 1, 2 and 3 m the resulting AOE area would be 3.14, 12.57 and 28.27 m^2, which equates to a theoretical hit probability of 2.3, 9.0 and 20.3%, respectively.
In-game testing (100 shots on target, 25 repetitions) however revealed an average hit chance of 5.1 +/- 2.37, 14.8 +/-3.60 and 28.7 +/- 5.74%, which is clearly higher than expected.
Now I've been scratching my head around how to make sense of this for some time, using exponential probability functions in an attempt to fit the model to the results with modest success, but the solution to the problem is indeed so simple in hindsight it hurts:
Just as tanks and other models use "hitboxes" in-game to give them some physical dimension, the same applies for infantry entities as well.
And by extending the distances in the AOE profile by 0.5 m - the presumed "radius" of this hitbox, all results suddenly fall in line with the expectation for a uniform scatter probability:
In the first example adding 0.5 m to the experimental average scatter distance leads to values of ~ 5 and 2.5 m - as predicted by the model.
Similarly, extending the AOE profiles in the second example by 0.5 m gives AOE-areas of 7.07, 19.63 and 38.48 m^2, which results in theoretical hit probabilities of 5.1, 14.1 and 27.6% - again very close to the experimentally derived values.