default random object?

Don nospam at nospam.com
Mon Feb 16 00:21:32 PST 2009


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.



More information about the Digitalmars-d mailing list