1    MODULE random_permutation_mod
2! .. Implicit None Statement ..
3      IMPLICIT NONE
4! ..
5    CONTAINS
6
7!*********************************************************************
8
9      SUBROUTINE random_permutation(iarray,larray)
10! .. Use Statements ..
11        USE random_uniform_integer_mod
12! ..
13! .. Implicit None Statement ..
14        IMPLICIT NONE
15! ..
16! .. Scalar Arguments ..
17        INTEGER :: larray
18! ..
19! .. Array Arguments ..
20        INTEGER, INTENT (INOUT) :: iarray(larray)
21! ..
22! .. Local Scalars ..
23        INTEGER :: i, itmp, iwhich
24! ..
25! .. Executable Statements ..
26
27!**********************************************************************
28!    SUBROUTINE GENPRM( IARRAY, LARRAY )
29!               GENerate random PeRMutation of iarray
30!                              Arguments
31!     IARRAY <--> On output IARRAY is a random permutation of its
32!                 value on input
33!                         INTEGER IARRAY( LARRAY )
34!     LARRAY <--> Length of IARRAY
35!                         INTEGER LARRAY
36!**********************************************************************
37        DO i = 1, larray
38          iwhich = random_uniform_integer(i,larray)
39          itmp = iarray(iwhich)
40          iarray(iwhich) = iarray(i)
41          iarray(i) = itmp
42        END DO
43        RETURN
44
45      END SUBROUTINE random_permutation
46
47!*********************************************************************
48
49    END MODULE random_permutation_mod
50