On Wednesday, 23 November 2016 at 10:33:21 UTC, Joseph Rushton
Wakeling wrote:
On Wednesday, 23 November 2016 at 05:26:12 UTC, Ilya Yaroshenko
wrote:
[...]
All of which is fine in its own terms, but why prioritize the
speed of the default behaviour over its reliability and
reproducibility?
Anyone who cares about that combination of speed and
statistical quality will have enough information in the
documentation to know what to do. By contrast producing
different results for identical user code depending on whether
you're making a 32- or 64-bit build is an unpleasant
complication it could be better to avoid.
In any case, given what you say above, shouldn't the choice of
32- vs. 64-bit RNG depend on whether one is using a
distribution that generates 32- vs. 64-bit floating-point
variates, rather than whether one is building for a 32- or
64-bit target? In which case it needs to be a user choice,
since it's only the user who knows what distribution they're
using.
We have a Random alias. I think it is OK if it generates
different numbers for different arch and library versions. If a
user want to exact the same behaviour he can use explicit names
like Mt19937_32 and Mt19937_64. Both are defined for all
architectures.
64-bit has not significant speed degradation on 64-bit machines
for 32-bit random number generation. Maybe only few %. So it is
better for 64-bit machines.
It is only question of `Random` alias, which can be changed in
the future anyway. Both Mt19937_32 and Mt19937_64 are defined.