default random object?
Benji Smith
dlanguage at benjismith.net
Wed Feb 18 19:26:01 PST 2009
Don wrote:
> Andrei Alexandrescu wrote:
>> Benji Smith wrote:
>>> 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
>>
>> I've never been in a situation in my life where I thought, hey, a
>> random double is exactly what I'd need right now. It's a ginormous
>> interval!
>>
>> Andrei
>
> It's worse than that. Since the range of double includes infinity, a
> uniform distribution must return +-infinity with probability 1. It's
> nonsense.
Way to miss the forest for the trees.
You guys telling me can't see any legitimate use for a NumericInterval
type? And that it wouldn't be convenient to use for random number
generation within that interval?
So the full double range was a dumb example. But that wasn't really the
point, was it?
--benji
More information about the Digitalmars-d
mailing list