PROGRAM satunnainen IMPLICIT NONE CALL alusta CALL tulosta CONTAINS SUBROUTINE alusta IMPLICIT NONE INTEGER :: koko, tila, laskuri INTEGER, DIMENSION(:), ALLOCATABLE :: siemen CALL RANDOM_SEED(size=koko) ALLOCATE(siemen(koko), stat=tila) IF (tila > 0) STOP 'Tilanvaraus epäonnistui!' CALL SYSTEM_CLOCK(count=laskuri) siemen = laskuri CALL RANDOM_SEED(put=siemen) END SUBROUTINE alusta SUBROUTINE tulosta IMPLICIT NONE INTEGER :: n, tila REAL :: a, b REAL, DIMENSION(:), ALLOCATABLE :: luvut write (*,'(A)',ADVANCE='NO') 'Anna ala- ja yläraja: ' READ (*,*) a, b WRITE (*,'(A)',ADVANCE='NO') & 'Anna satunnaislukujen lukumäärä: ' READ (*,*) n ALLOCATE(luvut(n), stat=tila) IF (tila > 0) STOP 'Tilanvaraus epäonnistui!' CALL RANDOM_NUMBER(luvut) WRITE (*,'(A)') 'Satunnaisluvut:' WRITE (*,'(6(F10.6))') a + (b-a)*luvut END SUBROUTINE tulosta END PROGRAM satunnainen