program assign3_3
implicit none
integer :: i,n
real,allocatable :: u(:),x(:)
real :: sumx,sumx2

print*,'How many samples?'
read*,n

allocate(u(12),x(n))

call random_number(x)

print*,'a) using UN(0,1):'

call meansd

do i=1,n
   x(i)=normal(u)
enddo

print*,'b) using N(0,1):'

call meansd

contains

function normal(u) result(c)
real :: c,u(12)
call random_number(u)
c=sum(u)-6.0
end function

subroutine meansd
sumx=0; sumx2=0
do i=1,n
   sumx=sumx+x(i)
   sumx2=sumx2+x(i)*x(i)
enddo
sumx=sumx/n
print*,'Mean =',sumx
print*,'SD =',sqrt((sumx2-sumx*sumx*n)/(n-1))
end subroutine

end program assign3_3