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