LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ dlarnd()

double precision function dlarnd ( integer  IDIST,
integer, dimension( 4 )  ISEED 
)

DLARND

Purpose:
 DLARND returns a random real number from a uniform or normal
 distribution.
Parameters
[in]IDIST
          IDIST is INTEGER
          Specifies the distribution of the random numbers:
          = 1:  uniform (0,1)
          = 2:  uniform (-1,1)
          = 3:  normal (0,1)
[in,out]ISEED
          ISEED is INTEGER array, dimension (4)
          On entry, the seed of the random number generator; the array
          elements must be between 0 and 4095, and ISEED(4) must be
          odd.
          On exit, the seed is updated.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016
Further Details:
  This routine calls the auxiliary routine DLARAN to generate a random
  real number from a uniform (0,1) distribution. The Box-Muller method
  is used to transform numbers from a uniform to a normal distribution.

Definition at line 75 of file dlarnd.f.

75 *
76 * -- LAPACK auxiliary routine (version 3.7.0) --
77 * -- LAPACK is a software package provided by Univ. of Tennessee, --
78 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
79 * December 2016
80 *
81 * .. Scalar Arguments ..
82  INTEGER idist
83 * ..
84 * .. Array Arguments ..
85  INTEGER iseed( 4 )
86 * ..
87 *
88 * =====================================================================
89 *
90 * .. Parameters ..
91  DOUBLE PRECISION one, two
92  parameter( one = 1.0d+0, two = 2.0d+0 )
93  DOUBLE PRECISION twopi
94  parameter( twopi = 6.2831853071795864769252867663d+0 )
95 * ..
96 * .. Local Scalars ..
97  DOUBLE PRECISION t1, t2
98 * ..
99 * .. External Functions ..
100  DOUBLE PRECISION dlaran
101  EXTERNAL dlaran
102 * ..
103 * .. Intrinsic Functions ..
104  INTRINSIC cos, log, sqrt
105 * ..
106 * .. Executable Statements ..
107 *
108 * Generate a real random number from a uniform (0,1) distribution
109 *
110  t1 = dlaran( iseed )
111 *
112  IF( idist.EQ.1 ) THEN
113 *
114 * uniform (0,1)
115 *
116  dlarnd = t1
117  ELSE IF( idist.EQ.2 ) THEN
118 *
119 * uniform (-1,1)
120 *
121  dlarnd = two*t1 - one
122  ELSE IF( idist.EQ.3 ) THEN
123 *
124 * normal (0,1)
125 *
126  t2 = dlaran( iseed )
127  dlarnd = sqrt( -two*log( t1 ) )*cos( twopi*t2 )
128  END IF
129  RETURN
130 *
131 * End of DLARND
132 *
double precision function dlarnd(IDIST, ISEED)
DLARND
Definition: dlarnd.f:75
double precision function dlaran(ISEED)
DLARAN
Definition: dlaran.f:69