default random object?

Leandro Lucarella llucax at gmail.com
Mon Feb 16 05:46:58 PST 2009


Andrei Alexandrescu, el 13 de febrero a las 17:10 me escribiste:
> Leonardo suggested that some functions in std.random should not require their 
> user to be bothered with creating a random object, i.e.:
> 
> auto r = Random(unpredictableSeed);
> auto n = uniform(r, 0, 100);
> 
> Instead the library should simply support:
> 
> auto n = uniform(0, 100);
> 
> and do this by presumably using a global RNG under the hood. So I wanted to ask 
> all y'all:
> 
> 1. Are you cool with making the rng the last parameter and give it a default 
> value?

Yes

> 2. The global random generator will be allocated per thread. Are you cool with 
> this too?

Yes

> 3. How should the global rng be initialized? To always generate the same 
> sequence, or not?

NO! I think this feature is for small script-like programs, where the most
common case is you want a random number to be random =)

If you want to do some more complicated stuff, just set the seed yourself.

> 4. While we're at it, should uniform(a, b) generate by default something in [a, 
> b] or [a, b)? Someone once explained to me that generating [a, b] for floating 
> point numbers is the source of all evils and that Hitler, Stalin and Kim Il Sung 
> (should he still be alive) must be using that kind of generator. Conversely, 
> generating [a, b) is guaranteed to bring in the long term everlasting peace to 
> Earth. My problem however is that in the integer realm I always want to generate 
> [a, b]. Furthermore, I wouldn't be happy if the shape of the interval was 
> different for integers and floating point numbers. How to break this conundrum? 
> Don't forget that we're only worrying about defaults, explicit generation is 
> always possible with self-explanatory code:

Being a C and Python programmer mostly, I find more intuitive [a, b) (The
'for' statement is usually used that way, same for the Python's range()
function)

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Un paracaidista, que no deja de caer.
Lo que me lleva hacia arriba, es lo que me tira hacia abajo.



More information about the Digitalmars-d mailing list