random, srandom, initstate, setstate - random number generator

Synopsis

Description

Errors

Notes

Colophon

#include <stdlib.h>

long int random(void);

void srandom(unsigned intseed);

char *initstate(unsigned intseed, char *state, size_tn);

char *setstate(char *state);Feature Test Macro Requirements for glibc (see

feature_test_macros(7)):

random(),srandom(),initstate(),setstate():_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

Therandom() function uses a nonlinear additive feedback random number generator employing a default table of size 31 long integers to return successive pseudo-random numbers in the range from 0 toRAND_MAX. The period of this random number generator is very large, approximately16 * ((2^31) - 1).The

srandom() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned byrandom(). These sequences are repeatable by callingsrandom() with the same seed value. If no seed value is provided, therandom() function is automatically seeded with a value of 1.The

initstate() function allows a state arraystateto be initialized for use byrandom(). The size of the state arraynis used byinitstate() to decide how sophisticated a random number generator it should use—the larger the state array, the better the random numbers will be.seedis the seed for the initialization, which specifies a starting point for the random number sequence, and provides for restarting at the same point.The

setstate() function changes the state array used by therandom() function. The state arraystateis used for random number generation until the next call toinitstate() orsetstate().statemust first have been initialized usinginitstate() or be the result of a previous call ofsetstate().

Therandom() function returns a value between 0 andRAND_MAX. Thesrandom() function returns no value. Theinitstate() function returns a pointer to the previous state array. Thesetstate() function returns a pointer to the previous state array, or NULL on error.

EINVALA state array of less than 8 bytes was specified to initstate().

4.3BSD, POSIX.1-2001.

Current "optimal" values for the size of the state arraynare 8, 32, 64, 128, and 256 bytes; other amounts will be rounded down to the nearest known amount. Using less than 8 bytes will cause an error.This function should not be used in cases where multiple threads use

random() and the behavior should be reproducible. Userandom_r(3) for that purpose.Random-number generation is a complex topic.

Numerical Recipes in C: The Art of Scientific Computing(William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) provides an excellent discussion of practical random-number generation issues in Chapter 7 (Random Numbers).For a more theoretical discussion which also covers many practical issues in depth, see Chapter 3 (Random Numbers) in Donald E. Knuth’s

The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.

drand48(3),rand(3),random_r(3),srand(3)

This page is part of release 3.44 of the Linuxman-pagesproject. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

GNU |
RANDOM (3) | 2010-09-20 |