This distinction has little to do with the subtlety of floats. You can e.g. generate numbers up to 100 with
- 5d20 (5 dice of 20 sides),
- 20d5 or even
- 16d6+1d4.
[Edit: the point of this exercise: these are different representations of the numbers up to 100.]
But even assuming each die with D sides has equiprobable results with prob 1/D, these choices don't have the same probability distribution. To convince yourself of this, compare 1d12 (the probability of getting 1 is 1/12) with 2d6 (the probability of getting 1 is 0).
I'm not saying that your solution hasn't its merits, well done.
[0] The author of the code is a known member of the demoscene
All operations (add/sub, mul/div, sin, exp, log, etc...), with IEEE754 floats are defined using real arithmetic, and then assumed to round to the nearest representable floating point value. I don't see why random number generation, at least as a default before micro-optimizing, should be any different.