Benji Smith wrote:
Maybe a NumericInterval struct would be a good idea. It could be specialized to any numeric type (float, double, int, etc), it would know its own boundaries, and it'd keep track of whether those boundaries were open or closed.

The random functions would take an RND and an interval (with some reasonable default intervals for common tasks like choosing elements from arrays and random-access ranges).

I have a Java implementation around here somewhere that I could port to D if anyone is interested.

--benji

Incidentally, the NumericInterval has lots of other interesting applications. For example

   auto i = NumericInterval.UBYTE.intersect(NumericInterval.SBYTE);
   bool safelyPolysemious = i.contains(someByteValue);

   auto array = new double[123];
   auto i = NumericInterval.indexInterval(array);
   bool indexIsLegal = i.contains(someIndex);

Using a numeric interval for generating random numbers would be, in my opinion, totally ideal.

   double d = uniform(NumericInterval.DOUBLE); // Any double value

   auto i = NumericInterval.parse("[ 123, 456.789 )");
   double random = uniform!(double)(i, rng);

--benji

Reply via email to