| Skip Navigation Links | |
| Exit Print View | |
![]() | man pages section 3: Basic Library Functions Oracle Solaris 11 Information Library |
enable_extended_FILE_stdio(3C)
posix_spawnattr_getschedparam(3C)
posix_spawnattr_getschedpolicy(3C)
posix_spawnattr_getsigdefault(3C)
posix_spawnattr_getsigignore_np(3C)
posix_spawnattr_getsigmask(3C)
posix_spawnattr_setschedparam(3C)
posix_spawnattr_setschedpolicy(3C)
posix_spawnattr_setsigdefault(3C)
posix_spawnattr_setsigignore_np(3C)
posix_spawnattr_setsigmask(3C)
posix_spawn_file_actions_addclose(3C)
posix_spawn_file_actions_addclosefrom_np(3C)
posix_spawn_file_actions_adddup2(3C)
posix_spawn_file_actions_addopen(3C)
posix_spawn_file_actions_destroy(3C)
posix_spawn_file_actions_init(3C)
pthread_attr_getdetachstate(3C)
pthread_attr_getinheritsched(3C)
pthread_attr_getschedparam(3C)
pthread_attr_getschedpolicy(3C)
pthread_attr_setdetachstate(3C)
pthread_attr_setinheritsched(3C)
pthread_attr_setschedparam(3C)
pthread_attr_setschedpolicy(3C)
pthread_barrierattr_destroy(3C)
pthread_barrierattr_getpshared(3C)
pthread_barrierattr_setpshared(3C)
pthread_condattr_getpshared(3C)
pthread_condattr_setpshared(3C)
pthread_cond_reltimedwait_np(3C)
pthread_key_create_once_np(3C)
pthread_mutexattr_getprioceiling(3C)
pthread_mutexattr_getprotocol(3C)
pthread_mutexattr_getpshared(3C)
pthread_mutexattr_getrobust(3C)
pthread_mutexattr_setprioceiling(3C)
pthread_mutexattr_setprotocol(3C)
pthread_mutexattr_setpshared(3C)
pthread_mutexattr_setrobust(3C)
pthread_mutex_getprioceiling(3C)
pthread_mutex_reltimedlock_np(3C)
pthread_mutex_setprioceiling(3C)
pthread_rwlockattr_destroy(3C)
pthread_rwlockattr_getpshared(3C)
pthread_rwlockattr_setpshared(3C)
pthread_rwlock_reltimedrdlock_np(3C)
pthread_rwlock_reltimedwrlock_np(3C)
pthread_rwlock_timedrdlock(3C)
pthread_rwlock_timedwrlock(3C)
rctlblk_get_enforced_value(3C)
- generate uniformly distributed pseudo-random numbers
#include <stdlib.h>doubledrand48(void)
doubleerand48(unsigned shortxi[3]);
longlrand48(void)
longnrand48(unsigned shortxi[3]);
longmrand48(void)
longjrand48(unsigned shortxi[3]);
voidsrand48(longseedval);
unsigned short *seed48(unsigned shortseed16v[3]);
voidlcong48(unsigned shortparam[7]);
This family of functions generates pseudo-random numbers using the well-known linear congruentialalgorithm and 48-bit integer arithmetic.
Functionsdrand48() anderand48() return non-negative double-precision floating-point values uniformly distributed overthe interval [0.0, 1.0).
Functionslrand48() andnrand48() return non-negative long integers uniformly distributed over theinterval [0, 231].
Functionsmrand48() andjrand48() return signed long integers uniformly distributed over theinterval [-231 , 231 ].
Functionssrand48(),seed48(), andlcong48() are initialization entry points, one of whichshould be invoked before eitherdrand48(),lrand48(), ormrand48() is called. (Although itis not recommended practice, constant default initializer values will be supplied automaticallyifdrand48(),lrand48(), ormrand48() is called without a prior call toan initialization entry point.) Functionserand48( ),nrand48( ), andjrand48() do not requirean initialization entry point to be called first.
All the routines work by generating a sequence of 48-bit integer values,Xi, according to the linear congruential formula
Xn+1= (aXn+c)mod m n>=0.
The parameterm = 248; hence 48-bit integer arithmetic is performed. Unlesslcong48() has been invoked, the multiplier valueaand the addend valuecaregiven by
|
The value returned by any of the functionsdrand48(),erand48(),lrand48(),nrand48(),mrand48(), orjrand48() is computed by first generating the next 48-bit Xiin the sequence. Then the appropriate number of bits, according to the typeof data item to be returned, are copied from the high-order (leftmost)bits of Xi and transformed into the returned value.
The functionsdrand48(),lrand48(), andmrand48() store the last 48-bit Xi generatedin an internal buffer. Xi must be initialized prior to being invoked.The functionserand48(),nrand48(), andjrand48() require the calling program to providestorage for the successive Xi values in the array specified as anargument when the functions are invoked. These routines do not have tobe initialized; the calling program must place the desired initial value of Xiinto the array and pass it as an argument. By using differentarguments, functionserand48(),nrand48(), andjrand48() allow separate modules of a largeprogram to generate severalindependent streams of pseudo-random numbers, that is, thesequence of numbers in each stream willnot depend upon how manytimes the routines have been called to generate numbers for the otherstreams.
The initializer functionsrand48() sets the high-order 32 bits of Xi tothe 32 bits contained in its argument. The low-order 16 bits ofXi are set to the arbitrary value 330E16 .
The initializer functionseed48() sets the value of Xi to the 48-bitvalue specified in the argument array. In addition, the previous value ofXi is copied into a 48-bit internal buffer, used only byseed48(), anda pointer to this buffer is the value returned byseed48(). Thisreturned pointer, which can just be ignored if not needed, is usefulif a program is to be restarted from a given point atsome future time — use the pointer to get at and storethe last Xi value, and then use this value to reinitialize usingseed48()when the program is restarted.
The initialization functionlcong48() allows the user to specify the initial Xithe multiplier valuea, and the addend valuec. Argument array elementsparam[0-2] specify Xi,param[3-5] specify the multipliera, andparam[6] specifies the 16-bitaddendc. Afterlcong48() has been called, a subsequent call to eithersrand48() orseed48() will restore the ``standard'' multiplier and addend values,aandc, specified above.
Programmers should use/dev/urandom or/dev/random for most random-number generation, especially forcryptographic purposes. Seerandom(7D).
Seeattributes(5) for descriptions of the following attributes:
|
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices | ![]() ![]() |