Chapter 18: Random Number Generation

RNSPH

Generates pseudorandom points on a unit circle or K-dimensional sphere.

Required Arguments

ZNR by K matrix containing the random Cartesian coordinates on the unit circle or sphere.   (Output)

Optional Arguments

NR — Number of random numbers to generate.   (Input)
Default: NR = size (Z,1).

K — Dimension of the circle (K = 2) or of the sphere.   (Input)
Default: K = size (Z,2).

LDZ — Leading dimension of Z exactly as specified in the dimension statement of the calling program.   (Input)
Default: LDZ = size (Z,1).

FORTRAN 90 Interface

Generic:                              CALL RNSPH (Z [,…])

Specific:                             The specific interface names are S_RNSPH and D_RNSPH.

FORTRAN 77 Interface

Single:                                CALL RNSPH (NR, K, Z, LDZ)

Double:                              The double precision name is DRNSPH.

Description

Routine RNSPH generates pseudorandom coordinates of points that lie on a unit circle or a unit sphere in K-dimensional space. For points on a circle (K = 2), pairs of uniform (− 1, 1) points are generated and accepted only if they fall within the unit circle (the sum of their squares is less than 1), in which case they are scaled so as to lie on the circle.

For spheres in three or four dimensions, the algorithms of Marsaglia (1972) are used. For three dimensions, two independent uniform (− 1, 1) deviates U1 and U2 are generated and accepted only if the sum of their squares S1 is less than 1. Then, the coordinates

are formed. For four dimensions, U1, U2, and S1 are produced as described above. Similarly, U3, U4, and S2 are formed. The coordinates are then

and

For spheres in higher dimensions, K independent normal deviates are generated and scaled so as to lie on the unit sphere in the manner suggested by Muller (1959).

Comments

The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator.

Example

In this example, RNSPH is used to generate two uniform random deviates from the surface of the unit sphere in three space.

 

      USE UMACH_INT

      USE RNSET_INT

      USE RNSPH_INT

 

      IMPLICIT   NONE

      INTEGER    K, LDZ, NR

      PARAMETER  (K=3, LDZ=2)

!

      INTEGER    I, ISEED, J, NOUT

      REAL       Z(LDZ,K)

!

      CALL UMACH (2, NOUT)

      NR    = 2

      ISEED = 123457

      CALL RNSET (ISEED)

      CALL RNSPH (Z)

      WRITE (NOUT,99999) ((Z(I,J),J=1,K),I=1,NR)

99999 FORMAT ('      Coordinates of first point: ', 3F8.4, /, &

            '      Coordinates of second point:', 3F8.4)

      END

Output

 

      Coordinates of first point:   0.8893  0.2316  0.3944

      Coordinates of second point:  0.1901  0.0396 -0.9810



http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260