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 se-
       quence of pseudo-random numbers to be returned by subsequent  calls  to
       rand().	If  srand()  is	 then called with the same seed	value, the se-
       quence 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 1.

       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