dxorshift: random number generators from the extended Xorshift family
Joseph Rushton Wakeling via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Sun May 15 03:43:55 PDT 2016
On Sunday, 15 May 2016 at 10:35:11 UTC, Basile B. wrote:
> The "@disable this" is really a concern, because pointers have
> to be used (for example if the seed comes from a program option
> and that the gen is a global var then global var must be a
> pointer to the stuff).
>
> I see that you are yourself affected by the issue because in
> the unittest you must take the gen address to use it in take .
>
> The main consequence is that they are unsable in @safe code !
The @safe side of things is obviously a concern, but having @safe
code is not very helpful if you don't also have _statistical_
safety. See what happens with phobos RNGs if you try,
import std.stdio : writeln;
import std.random : Random, unpredictableSeed
import std.range : take;
auto gen = Random(unpredictableSeed);
gen.take(10).writeln;
gen.take(10).writeln;
... ;-)
Probably the best way to handle this is to handle the
take-the-address side of things by a @trusted wrapper that uses
`return ref` to guarantee the pointer remains valid for the
lifetime of the wrapper itself.
More information about the Digitalmars-d-announce
mailing list