RAND

Generates a scalar, rank-1, rank-2 or rank-3 array of random numbers.

Function Return Value

Scalar, rank-1, rank-2 or rank-3 array of random numbers. The output function value matches the input argument A in type, kind and rank. For complex arguments, the output values will be real and imaginary parts with random values of the same type, kind, and rank.  (Output)

Required Argument

A — The argument must be a scalar, rank-1, rank-2, or rank-3 array of type single, double, complex, or double complex. Used only to determine the type and rank of the output. (Input)

Optional Arguments, Packaged Options

Note: If any of the arrays s_rand_options(:), s_rand_options_once(:), d_rand_options(:), or d_rand_options_once(:) are allocated, they are passed as arguments to rand_gen using the keyword “iopt=”.

The option and derived type names are given in the following table:

Name of Unallocated Option Array to Use for Setting Options

Use

Derived Type

?_rand_options(:)

Use when setting options for calls hereafter.

?_options

?_rand_options_once(:)

Use when setting options for next call only.

?_options

FORTRAN 90 Interface

RAND(A)

Description

Generates a scalar, rank-1, rank-2 or rank-3 array of random numbers. Each component number is positive and strictly less than one in value.

This function uses rand_gen to obtain the number of values required by the argument. The values are then copied using the RESHAPE intrinsic

Example

 

use show_int

use rand_int

 

implicit none

 

! This is the equivalent of Example 1 for SHOW.

 

integer, parameter :: n=7, m=3

real(kind(1e0)) s_x(-1:n), s_m(m,n)

real(kind(1d0)) d_x(n), d_m(m,n)

complex(kind(1e0)) c_x(n), c_m(m,n)

complex(kind(1d0)) z_x(n),z_m(m,n)

integer i_x(n), i_m(m,n)

type (s_options) options(3)

 

! The data types printed are real(kind(1e0)), real(kind(1d0)),

! complex(kind(1e0)), complex(kind(1d0)), and INTEGER. Fill with random

! numbers and then print the contents, in each case with a label.

s_x=rand(s_x); s_m=rand(s_m)

d_x=rand(d_x); d_m=rand(d_m)

c_x=rand(c_x); c_m=rand(c_m)

z_x=rand(z_x); z_m=rand(z_m)

i_x=100*rand(s_x(1:n)); i_m=100*rand(s_m)

 

call show (s_x, 'Rank-1, REAL')

call show (s_m, 'Rank-2, REAL')

call show (d_x, 'Rank-1, DOUBLE')

call show (d_m, 'Rank-2, DOUBLE')

call show (c_x, 'Rank-1, COMPLEX')

call show (c_m, 'Rank-2, COMPLEX')

call show (z_x, 'Rank-1, DOUBLE COMPLEX')

call show (z_m, 'Rank-2, DOUBLE COMPLEX')

call show (i_x, 'Rank-1, INTEGER')

call show (i_m, 'Rank-2, INTEGER')

 

! Show 7 digits per number and -1 according to the

! natural or declared size of the array.

options(1)=show_significant_digits_is_7

options(2)=show_starting_index_is

options(3)= -1 ! The starting -1 value.

call show (s_x, &

'Rank-1, REAL with 7 digits, natural indexing', IOPT=options)

end