views:

130

answers:

3

Why is it not a const? I think this is not a clear C++ way. Perhaps there is a more C++ way to generate random numbers, is there?

+5  A: 

If you're looking for a "more C++-way", you could use boost::random.

Anyway, RAND_MAX is a macro, because it comes from "legacy C" rand() function, where using preprocessor symbols for declaring constants was a de-facto standard.

HardCoder1986
+11  A: 

RAND_MAX comes from the C standard library, where it is defined as a macro.

In C, macros are the way manifest constants are defined. A const object isn't actually a constant in C (this means a const object cannot be used in constant expressions).

James McNellis
+1 (... which expands to an integer constant expression).
schot
+1  A: 

It's a macro because it comes from C where it's been a macro for a long time.

  1. Boost random would be one alternative.
  2. TR1's random number generation classes would be another.
  3. Unlike most of TR1, the PRNG classes are being completely revised for C++0x.
Jerry Coffin
Thanks for TR1's random number generator
01d