*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: rand_r | Section: 3 | Source: FreeBSD | File: rand_r.3.gz
RAND(3) FreeBSD Library Functions Manual RAND(3) NAME rand, srand, rand_r - bad random number generator LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <stdlib.h> void srand(unsigned seed); int rand(void); int rand_r(unsigned *ctx); DESCRIPTION The functions described in this manual page are not cryptographically secure. Applications which require unpredictable random numbers should use arc4random(3) instead. The rand() function computes a sequence of pseudo-random integers in the range of 0 to RAND_MAX, inclusive. The srand() function seeds the algorithm with the seed parameter. Repeatable sequences of rand() output may be obtained by calling srand() with the same seed. rand() is implicitly initialized as if srand(1) had been invoked explicitly. In FreeBSD 13, rand() is implemented using the same 128-byte state LFSR generator algorithm as random(3). However, the legacy rand_r() function is not (and can not be, because of its limited *ctx size). rand_r() implements the historical, poor-quality Park-Miller 32-bit LCG and should not be used in new designs. IMPLEMENTATION NOTES Since FreeBSD 13, rand() is implemented with the same generator as random(3), so the low-order bits should no longer be significantly worse than the high-order bits. SEE ALSO arc4random(3), random(3), random(4) STANDARDS The rand() and srand() functions conform to ISO/IEC 9899:1990 ("ISO C90"). The rand_r() function is not part of ISO/IEC 9899:1990 ("ISO C90") and is marked obsolescent in IEEE Std 1003.1-2008 ("POSIX.1"). It may be removed in a future revision of POSIX. CAVEATS Prior to FreeBSD 13, rand() used the historical Park-Miller generator with 32 bits of state and produced poor quality output, especially in the lower bits. rand() in earlier versions of FreeBSD, as well as other standards-conforming implementations, may continue to produce poor quality output. These functions should not be used in portable applications that want a high quality or high performance pseudorandom number generator. One possible replacement, random(3), is portable to Linux -- but it is not especially fast, nor standardized. If broader portability or better performance is desired, any of the widely available and permissively licensed SFC64/32, JSF64/32, PCG64/32, or SplitMix64 algorithm implementations may be embedded in your application. These algorithms have the benefit of requiring less space than random(3) and being quite fast (in header inline implementations). FreeBSD 14.1-RELEASE-p8 February 1, 2020 FreeBSD 14.1-RELEASE-p8

Navigation Options