rand_r man page on CentOS

Man page or keyword search:  
man Server   8420 pages
apropos Keyword Search (all sections)
Output format
CentOS logo
[printable version]

RAND(P)			   POSIX Programmer's Manual		       RAND(P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the	 corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.

NAME
       rand, rand_r, srand - pseudo-random number generator

SYNOPSIS
       #include <stdlib.h>

       int rand(void);

       int rand_r(unsigned *seed);
       void srand(unsigned seed);

DESCRIPTION
       The rand() function shall compute a sequence of pseudo-random  integers
       in the range [0, {RAND_MAX}]    with a period of at least 2**32.

       The  rand()  function  need  not	 be  reentrant. A function that is not
       required to be reentrant is not required to be thread-safe.

       The rand_r() function shall compute a sequence of  pseudo-random	 inte‐
       gers  in	 the range [0, {RAND_MAX}]. (The value of the {RAND_MAX} macro
       shall be at least 32767.)

       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
       returns and calls to rand_r(), the same sequence shall be generated.

       The srand() function uses the argument 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 shall be repeated. If rand() is called before any
       calls to srand() are made, the same sequence shall be generated as when
       srand() is first called with a seed value of 1.

       The  implementation shall behave as if no function defined in this vol‐
       ume of IEEE Std 1003.1-2001 calls rand() or srand().

RETURN VALUE
       The rand() function shall return the next pseudo-random number  in  the
       sequence.

       The rand_r() function shall return a pseudo-random integer.

       The srand() function shall not return a value.

ERRORS
       No errors are defined.

       The following sections are informative.

EXAMPLES
   Generating a Pseudo-Random Number Sequence
       The  following  example	demonstrates  how  to  generate	 a sequence of
       pseudo-random numbers.

	      #include <stdio.h>
	      #include <stdlib.h>
	      ...
		  long count, i;
		  char *keystr;
		  int elementlen, len;
		  char c;
	      ...
	      /* Initial random number generator. */
		  srand(1);

		  /* Create keys using only lowercase characters */
		  len = 0;
		  for (i=0; i<count; i++) {
		      while (len < elementlen) {
			  c = (char) (rand() % 128);
			  if (islower(c))
			      keystr[len++] = c;
		      }

		      keystr[len] = '\0';
		      printf("%s Element%0*ld\n", keystr, elementlen, i);
		      len = 0;
		  }

   Generating the Same Sequence on Different Machines
       The following code defines a pair of functions that could  be  incorpo‐
       rated  into  applications  wishing  to ensure that the same sequence of
       numbers is generated across different machines.

	      static unsigned long next = 1;
	      int myrand(void)	/* RAND_MAX assumed to be 32767. */
	      {
		  next = next * 1103515245 + 12345;
		  return((unsigned)(next/65536) % 32768);
	      }

	      void mysrand(unsigned seed)
	      {
		  next = seed;
	      }

APPLICATION USAGE
       The drand48() function provides a much  more  elaborate	random	number
       generator.

       The  limitations on the amount of state that can be carried between one
       function call and another mean  the  rand_r()  function	can  never  be
       implemented  in	a  way	which  satisfies  all of the requirements on a
       pseudo-random number  generator.	 Therefore  this  function  should  be
       avoided whenever non-trivial requirements (including safety) have to be
       fulfilled.

RATIONALE
       The ISO C standard  rand()  and	srand()	 functions  allow  per-process
       pseudo-random  streams  shared by all threads. Those two functions need
       not change, but there has to be mutual-exclusion that  prevents	inter‐
       ference	between	 two  threads concurrently accessing the random number
       generator.

       With regard to rand(), there are two different behaviors	 that  may  be
       wanted in a multi-threaded program:

	1. A  single  per-process  sequence  of	 pseudo-random numbers that is
	   shared by all threads that call rand()

	2. A different sequence of pseudo-random numbers for each thread  that
	   calls rand()

       This  is provided by the modified thread-safe function based on whether
       the seed value is global to the entire process or local to each thread.

       This does not address the known deficiencies  of	 the  rand()  function
       implementations,	 which have been approached by maintaining more state.
       In effect, this specifies new thread-safe forms of  a  deficient	 func‐
       tion.

FUTURE DIRECTIONS
       None.

SEE ALSO
       drand48()  ,  the  Base	Definitions  volume  of	 IEEE Std 1003.1-2001,
       <stdlib.h>

COPYRIGHT
       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),	The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the	referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003			       RAND(P)
[top]

List of man pages available for CentOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net