DRAND48(3) Linux Programmer's Manual DRAND48(3)NAMEdrand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - generate uniformly distributed pseudo-random numbersSYNOPSIS#include<stdlib.h>doubledrand48(void);doubleerand48(unsignedshortintxsubi[3]);longintlrand48(void);longintnrand48(unsignedshortintxsubi[3]);longintmrand48(void);longintjrand48(unsignedshortintxsubi[3]);voidsrand48(longintseedval);unsignedshortint*seed48(unsignedshortintseed16v[3]);voidlcong48(unsignedshortintparam[7]);DESCRIPTIONThese functions generate pseudo-random numbers using the linear congruential algorithm and 48-bit integer arith- metic. Thedrand48()anderand48()functions return non-negative double-precision floating-point values uniformly dis- tributed between [0.0, 1.0). Thelrand48()andnrand48()functions return non-negative long integers uniformly distributed between 0 and 2^31. Themrand48()andjrand48()functions return signed long integers uniformly distributed between -2^31 and 2^31. Thesrand48(),seed48()andlcong48()functions are ini- tialization functions, one of which should be called before usingdrand48(),lrand48()ormrand49(). The func- tionserand48(),nrand48()andjrand48()do not require an initialization function to be called first. All the functions work by generating a sequence of 48-bit integers,Xi, according to the linear congruential for- mula:Xn+1=(aXn+c)modm,wheren>=0The parameterm= 2^48, hence 48-bit integer arithmetic is performed. Unlesslcong48()is called,aandcare given by:a=0x5DEECE66Dc=0xBThe value returned by any of the functionsdrand48(),erand48(),lrand48(),nrand48(),mrand48()orjrand48()is computed by first generating the next 48-bitXiin the sequence. Then the appropriate number of bits, according to the type of data item to be returned, is copied from the high-order bits ofXiand transformed into the returned value. The functionsdrand48(),lrand48()andmrand48()store the last 48-bitXigenerated in an internal buffer. The func- tionserand48(),nrand48()andjrand48()require the call- ing program to provide storage for the successiveXival- ues in the array argumentxsubi. The functions are ini- tialized by placing the initial value ofXiinto the array before calling the function for the first time. The initializer functionsrand48()sets the high order 32-bits ofXito the argumentseedval. The low order 16-bits are set to the arbitrary value 0x330E. The initializer functionseed48()sets the value ofXito the 48-bit value specified in the array argumentseed16v. The previous value ofXiis copied into an internal buffer and a pointer to this buffer is returned byseed48(). The initialization functionlcong48()allows the user to specify initial values forXi,aandc. Array argument elementsparam[0-2]specifyXi,param[3-5]specifya, andparam[6]specifiesc. Afterlcong48()has been called, a subsequent call to eithersrand48()orseed48()will restore the standard values ofaandc.CONFORMINGTOSVID 3NOTESThese functions are declared obsolete by SVID 3, which states that rand(3) should be used instead.SEEALSOrand(3),random(3) July 2, 1993 1