Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
rand(3C)		 Standard C Library Functions		      rand(3C)

       rand, srand, rand_r - simple random-number generator

       #include	<stdlib.h>

       int rand(void);

       void srand(unsigned int seed);

       int rand_r(unsigned int *seed);

       The  rand()  function  uses a multiplicative congruential random-number
       generator with period 2**32 that	returns	successive pseudo-random  num-
       bers in the range of 0 to RAND_MAX (defined in <stdlib.h>).

       The   srand()  function	uses  the  argument  seed  as a	seed for a new
       sequence	of pseudo-random numbers to be returned	by subsequent calls to
       rand().	If  srand()  is	 then  called  with  the  same seed value, the
       sequence	of pseudo-random numbers  will	be  repeated.	If  rand()  is
       called  before  any  calls to srand() have been made, the same sequence
       will be generated as when srand() is first called with a	seed value  of

       The  rand_r() function has the same functionality as rand() except that
       a pointer to a seed  seed must be supplied by the caller.  If  rand_r()
       is called with the same initial value for the object pointed to by seed
       and that	object is not modified between successive calls	 to  rand_r(),
       the  same  sequence  as that produced by	calls to rand()	will be	gener-

       The rand() and  srand()	functions  provide  per-process	 pseudo-random
       streams	shared	by all threads.	The same effect	can be achieved	if all
       threads call rand_r() with a pointer  to	 the  same  seed  object.  The
       rand_r()	 function  allows a thread to generate a private pseudo-random
       stream by having	the seed object	be private to the thread.

       The spectral properties of rand() are limited.  The  drand48(3C)	 func-
       tion provides a better, more elaborate random-number generator.

       When compiling multithreaded applications, the  _REENTRANT flag must be
       defined on the compile line.  This flag should be used only  in	multi-
       threaded	applications.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |
       |MT-Level		     |Safe			   |

       drand48(3C), attributes(5), standards(5)

SunOS 5.10			  19 May 2004			      rand(3C)


Want to link to this manual page? Use this URL:

home | help