default random object?

Nick Sabalausky a at a.a
Mon Feb 16 11:54:44 PST 2009


"Don" <nospam at nospam.com> wrote in message 
news:gnb7mt$2osv$1 at digitalmars.com...
> 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.

I would think that, with the possible exception of mathematicians, most of 
the time anyone would want a random floating-point number they would 
consider +/-infinity a special case. Most non-math-oriented code isn't 
really designed to handle infinity anyway. Besides, technically, double also 
includes NaN ;) 





More information about the Digitalmars-d mailing list