nrand48 man page on SmartOS

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

DRAND48(3C)							   DRAND48(3C)

       drand48,	 erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48,
       lcong48 - generate uniformly distributed pseudo-random numbers

       #include <stdlib.h>

       double drand48(void)

       double erand48(unsigned short x(i)[3]);

       long lrand48(void)

       long nrand48(unsigned short x(i)[3]);

       long mrand48(void)

       long jrand48(unsigned short x(i)[3]);

       void srand48(long seedval);

       unsigned short *seed48(unsigned short seed16v[3]);

       void lcong48(unsigned short param[7]);

       This family of functions	 generates  pseudo-random  numbers  using  the
       well-known linear congruential algorithm and 48-bit integer arithmetic.

       Functions  drand48() and erand48() return non-negative double-precision
       floating-point values uniformly distributed  over  the  interval	 [0.0,

       Functions  lrand48()  and  nrand48()  return non-negative long integers
       uniformly distributed over the interval [0, 2  ^31 ].

       Functions mrand48() and jrand48() return signed long integers uniformly
       distributed over the interval [-2 ^31  , 2 ^31  ].

       Functions  srand48(),  seed48(), and lcong48() are initialization entry
       points, one  of	which  should  be  invoked  before  either  drand48(),
       lrand48(),  or  mrand48()  is  called.  (Although it is not recommended
       practice, constant default initializer values will be supplied automat‐
       ically  if drand48(), lrand48(), or mrand48() is called without a prior
       call to an initialization entry point.) Functions erand48(), nrand48(),
       and jrand48() do not require an initialization entry point to be called

       All the routines work by generating a sequence of 48-bit	 integer  val‐
       ues, X(i ), according to the linear congruential formula

       X(n+1)= (aX (n)+c)(mod m) n>=0.

       The  parameter  m = 2^48; hence 48-bit integer arithmetic is performed.
       Unless lcong48() has been invoked, the multiplier value aand the addend
       value care given by
	 a = 5DEECE66D(16) = 273673163155(8)
	 c = B(16) = 13(8)

       The  value  returned  by	 any  of  the  functions drand48(), erand48(),
       lrand48(), nrand48(), mrand48(), or jrand48() is computed by first gen‐
       erating the next 48-bit X(i) in the sequence. Then the appropriate num‐
       ber of bits, according to the type of data item	to  be	returned,  are
       copied from the high-order (leftmost) bits of X(i) and transformed into
       the returned value.

       The functions drand48(), lrand48(), and mrand48() store the last 48-bit
       X(i) generated in an internal buffer. X(i) must be initialized prior to
       being  invoked.	The  functions	erand48(),  nrand48(),	and  jrand48()
       require	the calling program to provide storage for the successive X(i)
       values in the array specified as an argument  when  the	functions  are
       invoked. These routines do not have to be initialized; the calling pro‐
       gram must place the desired initial value of X(i) into  the  array  and
       pass  it	 as  an	 argument.  By	using  different  arguments, functions
       erand48(), nrand48(), and jrand48() allow separate modules of  a	 large
       program	to  generate several independent streams of pseudo-random num‐
       bers, that is, the sequence of numbers in each stream will  not	depend
       upon  how  many times the routines have been called to generate numbers
       for the other streams.

       The initializer function srand48() sets the high-order 32 bits of  X(i)
       to the 32 bits contained in its argument. The low-order 16 bits of X(i)
       are set to the arbitrary value 330E(16) .

       The initializer function seed48() sets the value of X(i) to the	48-bit
       value  specified in the argument array. In addition, the previous value
       of X(i) is copied into a 48-bit internal buffer, used only by seed48(),
       and  a  pointer	to this buffer is the value returned by seed48(). This
       returned pointer, which can just be ignored if not needed, is useful if
       a  program  is to be restarted from a given point at some future time —
       use the pointer to get at and store the last X(i) value, and  then  use
       this   value  to	 reinitialize  using  seed48()	when  the  program  is

       The initialization function lcong48() allows the user  to  specify  the
       initial	X(i) the multiplier value a, and the addend value c.  Argument
       array elements param[0-2] specify X(i), param[3-5] specify  the	multi‐
       plier  a,  and param[6] specifies the 16-bit addend c.  After lcong48()
       has been called, a subsequent call to either srand48() or seed48() will
       restore	the ``standard'' multiplier and addend values, a and c, speci‐
       fied above.

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

       │Interface Stability │ Standard	      │
       │MT-Level	    │ Safe	      │

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

				 Jul 24, 2002			   DRAND48(3C)

List of man pages available for SmartOS

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]
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