| ! PR15619 |
| ! Check that random_seed works as expected. |
| ! Does not check the quality of random numbers, hence should never fail. |
| program test_random |
| implicit none |
| integer, allocatable :: seed(:) |
| real, dimension(10) :: a, b |
| integer n; |
| |
| call random_seed (size=n) |
| allocate (seed(n)) |
| |
| ! Exercise the generator a bit. |
| call random_number (a) |
| |
| ! Remeber the seed and get 10 more. |
| call random_seed (get=seed) |
| call random_number (a) |
| |
| ! Get the same 10 numbers in two blocks, remebering the seed in the middle |
| call random_seed (put=seed) |
| call random_number (b(1:5)) |
| call random_seed(get=seed) |
| call random_number (b(6:10)) |
| if (any (a .ne. b)) call abort |
| |
| ! Get the last 5 numbers again. |
| call random_seed (put=seed) |
| call random_number (b(6:10)) |
| if (any (a .ne. b)) call abort |
| end program |
| |
| |