Example F Program--Rolling Dice

! Copyright (c) 1994, 1996 Unicomp, Inc.
!
! Developed at Unicomp, Inc.
!
! Permission to use, copy, modify, and distribute this
! software is freely granted, provided that this notice 
! is preserved.

module random_int_module

public :: random_int

contains

subroutine random_int (values, low, high)

   integer, dimension (:), intent (out) :: values
   integer, intent (in) :: low, high
   real, dimension (size (values)) :: uniform_value

   call random_number (uniform_value)
   values =  &
   int ((high - low + 1) * uniform_value + low)

end subroutine random_int

end module random_int_module

program seven_11

   use random_int_module
   integer, parameter :: number_of_rolls = 1000
   integer, dimension (number_of_rolls) ::  &
         dice, die_1, die_2
   integer :: wins

   call random_int (die_1, 1, 6)
   call random_int (die_2, 1, 6)
   dice = die_1 + die_2
   wins = count ((dice == 7) .or. (dice == 11))

   print "(a, f6.2)",  &
   "The percentage of rolls that are 7 or 11 is", &
   100.0 * real (wins) / real (number_of_rolls)

end program seven_11