Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > R


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


rand(), rand_r(), srand() — simple random-number generator


#include <stdlib.h>

int rand(void);

int rand_r(unsigned int *seed);

void srand(unsigned int seed);


rand() uses a multiplicative, congruential, random-number generator with period 232 that returns successive pseudo-random numbers in the range from 0 to 215-1.

srand() can be called at any time to reset the random-number generator to a random starting point. The generator is initially seeded with a value of 1.

rand_r() returns a random number at the address pointed to by the randval parameter. The seed parameter can be set at any time to start the random-number generator at an arbitrary point.


The spectral properties of rand() leave a great deal to be desired. drand48() provides a much better, though more elaborate, random-number generator (see drand48(3C)).


If seed or randval is NULL, rand_r() returns 0. Otherwise, rand_r() returns a psuedo-random integer.


The following:

int x, y; srand(10); x = rand(); y = rand();

would produce the same results as:

int x, y, s = 10; x=rand_r(&s); y=rand_r(&s);


Users of rand_r() should note that rand_r() now conforms with POSIX.1c. The old prototype of rand_r() is supported for compatibility with existing DCE applications only.


rand(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

rand_r(): POSIX.1c

srand(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.