module random_numbers implicit none contains !returns a random value between min and max function random_range(min, max) integer :: random_range integer, intent(IN) :: min, max real :: random call random_number(random) random_range = nint(random * (max - min)) + min end function !initialize the random number generator (platform independent) subroutine init_random() integer :: i, seed_size integer :: time_array(8) integer, allocatable :: seed(:) !find seed size call random_seed(size = seed_size) allocate(seed(seed_size)) !create seed from current seconds * milliseconds call date_and_time(values = time_array) seed(1) = time_array(8) * time_array(7) call random_seed(put = seed) end subroutine end module