This adds a isRandomNumberGenerator template to std.random, which can be used to detect if a type is a random-number generator.
Add isRandomNumberGenerator template
Odd naming convention, use Rng (or RandomNumberGenerator to avoid confusion with Range)
We really need this but the question is whether seed() is enough of a distinguishing factor for RNGs, or we should have every RNG out there expose an explicit trait saying "yes, I am a RNG".
Thinking about this, some Rngs might not even have seed methods, at least those that would be based on /dev/random and /dev/urandom. So we should probably have isRandomNumberGenerator and isSeedable.
What's the best way to implement that 'trait'? A simple enum isRandom = true; as a member of every Rng?
enum isRandom = true;
Yah, something like that but with "uniform" or "normal" in the name.
Should RandomSample and RandomCover also have that tag?
I don't think RandomSample and RandomCover would need the tag. We need the isUniform tag to make sure e.g. we generate Gaussians from uniform distributions etc.
Hmmm, this does not have "uniform" in its name, which would lead to confusion. For example, one would expect that a Gaussian random number generator does satisfy isRandomNumberGenerator. Should we call it isUniformRNG or isUniformRandomNumberGenerator or isUniformRandom?
I think isUniformRNG is best, isUniformRandomNumberGenerator is too long. Should the 'RNG' part really be all uppercase this time?
Merge branch 'master' into isRNG
Rename isRandomNumberGenerator to isUniformRNG