Andrey A. Chernov 476d9314d6 1) POSIX requires rand(3) return values to be in the [0, RAND_MAX] range,
but ACM formula we use have internal state (and return value) in the
[1, 0x7ffffffe] range, so our RAND_MAX (0x7fffffff) is never reached
because it is off by one, zero is not reached too.

Correct both RAND_MAX and rand(3) return value, shifting last one
to the 0 by 1 subtracted, resulting POSIXed [0, 0x7ffffffd(=new RAND_MAX)]
range.

2) Add a checks for not overflowing on too big seeds. It may happens on
the machines, where sizeof(unsigned int) > 32 bits.

Reviewed by:    bde [1]
MFC after:      2 weeks
2013-07-03 21:21:54 +00:00
..
2013-05-21 19:59:37 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2011-12-29 14:41:17 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2011-12-20 22:56:13 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2011-01-06 03:30:16 +00:00
2010-02-16 19:39:50 +00:00
2012-01-07 16:10:15 +00:00
2010-02-16 19:39:50 +00:00
2011-12-25 20:15:41 +00:00
2010-02-16 19:39:50 +00:00
2013-04-23 13:03:03 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2010-02-16 19:39:50 +00:00
2013-05-25 16:58:12 +00:00
2013-05-01 22:42:42 +00:00
2010-02-16 19:39:50 +00:00
2010-01-13 17:29:55 +00:00