Fri Jun 9 14:28:00 2000 Jeff Johnston <jjohnstn@cygnus.com>
* libc/include/sys/reent.h (_rand_next): Changed to unsigned long long and moved to end of _reent struct in _new union. (_REENT_INIT): Changed to move _rand_next initialization. * libc/stdlib/rand.c (rand): Changed to use unsigned long long linear congruential algorithm that is used by DJGPP.
This commit is contained in:
@ -78,9 +78,12 @@ _DEFUN (srand, (seed), unsigned int seed)
|
||||
int
|
||||
_DEFUN_VOID (rand)
|
||||
{
|
||||
return ((_REENT->_new._reent._rand_next =
|
||||
_REENT->_new._reent._rand_next * 1103515245 + 12345 )
|
||||
& RAND_MAX );
|
||||
/* This multiplier was obtained from Knuth, D.E., "The Art of
|
||||
Computer Programming," Vol 2, Seminumerical Algorithms, Third
|
||||
Edition, Addison-Wesley, 1998, p. 106 (line 26) & p. 108 */
|
||||
_REENT->_new._reent._rand_next =
|
||||
_REENT->_new._reent._rand_next * 6364136223846793005LL + 1;
|
||||
return (int)((_REENT->_new._reent._rand_next >> 32) & RAND_MAX);
|
||||
}
|
||||
|
||||
#endif /* _REENT_ONLY */
|
||||
|
Reference in New Issue
Block a user