Am Tue, 12 Jun 2012 11:48:11 +0200 schrieb Jens Mueller <jens.k.muel...@gmx.de>:
> > * As seed is a normal function right now, I can't overload it with a > > template. Is it safe to make the original seed a template as > > well, so seedRange could be named seed, or would that break the API? > > What do you mean by you can't overload it? Does it not compile? I > think it should. > > > * How should the seed array/range be generated? By repeatedly > > calling unpredictableSeed? > > No idea what is recommended from cryptographic point of view. > > > * Is there a Range which repeatedly calls a function? Similar to > > repeat, but not repeating a value. > > Here is one way to do it. > seedRange(map!((a) => unpredictableSeed)(iota(0, 624))); > Probably, there is a more straightforward way. Thanks, that's good enough. It would be even better if it was an infinite range, though. > I simplified your code a bit. > > enum n = 624; > enforce(range.length >= n, "MersenneTwisterEngine.seedRange: Input > range didn't provide enough" " elements"); I can't really use .length, the code has to work with infinite ranges as well. > uint mt[]; > mt.length = n; > copy(range, mt); > > But I'm unsure whether it still does what you intended. Well, the code was a simple 1:1 port of the boost function and as I'm not familiar with RNGs I don't really want to change (and probably break) it. > > Jens