Originally posted to comp.lang.fortran.
program allocate_coin_toss
implicit none
real, dimension(:,:), allocatable :: a
real :: u
call random_number(u)
if (u < 0.5) then
allocate(a(5,8))
else
allocate(a(7,4))
end if
print *, shape(a)
deallocate(a)
end program allocate_coin_toss