1st draft of complete class-based std.random successor
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Sun Mar 23 07:49:08 PDT 2014
On Sunday, 23 March 2014 at 10:15:32 UTC, bearophile wrote:
> Is the issue is already fixed in std.random you can close it :-)
Well, your request for a "choice" method is still open ... :-)
> The best thing is to add an efficient choice() function, so no
> efficiency mistake happens :-)
Sure, I'm simply raising a couple of simple internal
implementations that could be used for an effective first draft
of that function.
> So you are saying that those RNGs are already weakly pure and
> they can't become strongly pure because they take the engine as
> mutable class reference. And even if you design a very small
> random engine that can be created every time you call a random
> generator, the API of all the random functions is not
> compatible with it. So it's not a simple problem...
I think I need to make some detailed research into how Haskell
and other functional languages handle randomness before
commenting here. What it does seem to me at this stage is that
while a weakly pure range-based RNG is readily possible (as
implemented in std.random2.generator now), I'm not sure that the
range-based approach typical of Phobos plays nicely with strong
purity where random number generation is concerned.
> A possibility is to also add a less precise (more approximate)
> but faster function implementation.
Again, this is something I'll look into. I need to re-read the
paper on gaussian-distribution algorithms that I linked to
earlier in this thread, but my recollection is that the
speed/precision tradeoff is something of a false dichotomy given
the algorithms out there now; so a good range-based solution
(which stores internal state) will probably be able to provide
high-quality normal variates faster than a low-quality, purely
function-based implementation.
> Are the ddocs produced by std.random2 online somewhere?
Not yet. I can make that happen :-)
More information about the Digitalmars-d-announce
mailing list