normalrnd Function

function normalrnd(mean, stdev) result(c)

Arguments

Type IntentOptional Attributes Name
real(kind=8) :: mean
real(kind=8) :: stdev

Return Value real(kind=8)


Calls

proc~~normalrnd~~CallsGraph proc~normalrnd normalrnd mersenne mersenne proc~normalrnd->mersenne

Source Code

function normalrnd(mean,stdev) result(c)
  real(8)           :: mean,stdev,c,r,theta
  real(8),parameter :: pi=acos(-1d0)
  if(stdev <= 0d0) then
     Write(*,*) "NORMALRND: Standard Deviation must be +ve"
  else
     r     = (-2d0*log(mersenne()))**0.5d0
     theta = 2d0*pi*mersenne()
     c     = mean+stdev*r*sin(theta)
  end if
end function normalrnd