On Wednesday, 23 November 2016 at 00:44:26 UTC, Joseph Rushton
Wakeling wrote:
On Tuesday, 22 November 2016 at 06:31:45 UTC, Ilya Yaroshenko
wrote:
- 64-bit Mt19937 is default for 64-bit targets
This means that seemingly identical code will produce different
results depending on whether it's compiled for 64-bit or
32-bit. Is that really worth it, when anyone who cares about
the difference between 32-bit vs. 64-bit random words is quite
capable of specifying the RNG they want to use and not just
relying on the default?
Having a different default RNG would make sense for targets
where there are serious performance issues at stake (e.g.
minimal memory available for RNG state) but just for the sake
of 32- vs. 64-bit Mersenne Twister seems an unnecessary
complication.
These days it's debatable whether Mersenne Twister of _any_
word size is the optimal choice for a default RNG, so if the
default is going to be changed, it might as well be to
something significantly better (rather than worrying about
numbers of bits).
Mir Random is going to be a library with saturated uniform FP
RNGs and almost saturated exponential FP RNGs. Comparing with all
other libraries (any language) the basic uniform FP numbers will
be generated in interval (-1, +1) and contains _all_ possible
values including all subnormal numbers. 64 bit generators are 2
times faster for this task if you need to generate a 64 bit
floating point number. Explanation of technique will be in my
post/article. --Ilya