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